算法来源:《the art of computer programming vol 4》 算法的思路:
1、 将n为整数记作,a1a2…an ,初始化为0…00。
2、 令j = n, 计算aj = aj + 1; 当aj 等于m-1时,向高位进1,此位设为0,对所有为都重复此步骤。直到所有为都遍历完,为之。
此算法的c语言实现:
void mixed_radix_num(int n, int radix) { int j;
int *a=(int *) malloc (sizeof (int) * (n + 1)); if(!a) return;
for(j=0;j<=n;++j) *(a+j)=0; while(1){ print_num(a,n); j=n; while(*(a+j)==(radix-1)) { *(a+j)=0; j--; } if(j == 0) break; *(a+j)=*(a+j)+1; } free(a); a=0; }
此代码的关键:对于n位整数,申请n+1个整数的空间,a[0]作为哨兵位。 |