当前位置:编程学习 > C/C++ >>

计算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语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,