您的位置:首页 > 其它

计算n位m进制所有整数的算法

2011-10-07 12:37 211 查看
算法来源:《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]作为哨兵位。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐