计算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]作为哨兵位。
相关文章推荐
- 输入若干个整数输入是-1时,输入结束;后计算所有元素之和及平均值
- 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数
- 算法题: 求一个整数数组中,通过元素加减运算得到指定结果的所有运算过程. 例如【5,4,6,7,1】= 9 ?
- 在若干个整数中找到相加之和为某个整数的所有组合的算法
- 计算整数的划分可能性算法
- 【算法-java】打印出二叉树中结点值的和为输入整数的所有路径
- 已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x<1,每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。 从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(最后结果向上取整)。
- 计算一个整数二进制表示时有多少位是为1的算法
- 算法习题54:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分
- 史上最全 求一个整数二进制形式中 1 的个数所有算法---未完待续
- 计算1~100的所有整数中出现多少次数字9
- 淘宝面试题:如何充分利用多核CPU,计算很大的List中所有整数的和
- 笔试算法题(29):判断元素范围1到N的数组是否有重复数字 & 计算整数的7倍
- 淘宝面试题:如何充分利用多核CPU,计算很大的List中所有整数的和(转)
- 整数因子分解:计算一个整数所有的分解式(递归实现)
- 给定一个正整数N,从1到N所有整数,计算出现1的个数
- 计算出他们之间所有整数的和
- 计算从整数1到n之间,所有1的个数的和
- 奇妙的算法—怎么计算一段连续数字的所有约数的和
- 算法笔试题整理——升级蓄水池 && 字符串数字表达式计算值 && 求旅游完所有景点需要的最少天数 && 宝箱怪