计算n位m进制所有整数的算法
算法来源:《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]作为哨兵位。
补充:软件开发 , C语言 ,