程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 計算n位m進制所有整數的算法

計算n位m進制所有整數的算法

編輯:關於C

 

算法來源:《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. 下一頁:
Copyright © 程式師世界 All Rights Reserved