评playerc网友的\"求比指定数大且最小的“不重复数”问题\"
对于“大于指定正整数的最小“不重复数”问题”,最初,在 算法:求比指定数大且最小的“不重复数”问题的高效实现 中,我给出了一个递归写法,之后在同一篇博文中给出了一个非递归写法。 后来在 对Alexia(minmin)网友代码的评论及对“求比指定数大且最小的‘不重复数’问题”代码的改进 中对我的写法进行了更详细的说明,并进行了重要改进。使之适合范围更大。 在 评playerc网友的"求比指定数大且最小的“不重复数”问题" 中评论了playerc的写法。 playerc的思路没问题,但代码复杂且存在错误。现在我按照这个思路给出我的写法。 详细的分析求解过程,就不在正文中描述了。代码中有详尽的注释,在前几篇博文中也进行了说明。这次写法与前面的主要不同点的是,实现了只一次加0101……。 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define SIZE(x) (sizeof (x) / sizeof (x)[0]) 5 #define BE_DIG(x) ( '0' <= x && x <= '9' ) 6 #define MAX 128 7 8 typedef struct 9 { 10 unsigned char digs[ MAX + 1 ] ;//从低位到高位存储各位数字 11 //并为可能发生的进位预留一个位置