算法來源:《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]作為哨兵位。