n全排列輸出和 n個數的組合(數字範圍a~b)

來源:互聯網
上載者:User

標籤:io   for   sp   size   on   c   return   as   print   

n全排列輸出:

int WPermutation(int num, bool bRepeat)

num表示num全排列

bRepeat標誌是否產生重複元素的序列。

 

int Permutation(int n, int* A, int cur, bool bRepeat) {static int number = 0;if(cur == n){   number++;for(int i = 0; i< n; i++){printf("%d ", A[i]);}printf("\n");}else{for(int i = 1; i <= n; i++){int ok = 1;for(int j = 0; j < cur; j++)    {if(!bRepeat){if(A[j] == i){ok = 0;}}}if(ok){A[cur] = i;Permutation(n, A, cur + 1, bRepeat);}}}    return number;}int WPermutation(int num, bool bRepeat){printf("%d permutation(%s): %d ~ %d\n", num, bRepeat?"repeat mode":"single mode", 1, num);int n = num;int *A = (int*)malloc(n*sizeof(int));memset(A, 0, sizeof(n*sizeof(int)));int cur = 0;int number = Permutation(n, A, cur, bRepeat);delete [] A ;A = NULL;printf("over!\n");return number;}


int Wpermutation(int st, int en, int n, bool bRepeat);

 n個數的組合(數字範圍st~en),考慮重複元素:

n表示n個數字組合

每個數字範圍:st~en

bRepeat標誌是否產生重複元素的序列。

 

int Permutation(int st, int en, int n, int* A, int cur, bool bRepeat){static int number = 0;if(cur == n){   number++;for(int i = 0; i< n; i++){printf("%d ", A[i]);}printf("\n");}else{for(int i = st; i <= en; i++){int ok = 1;for(int j = 0; j < cur; j++){if(!bRepeat){if(A[j] == i){ok = 0;}}}if(ok){A[cur] = i;Permutation(st, en, n, A, cur + 1, bRepeat);}}}return number;}int Wpermutation(int st, int en, int n, bool bRepeat){printf("%d permutation(%s): %d ~ %d\n", n, bRepeat?"repeat mode":"single mode", st, en);int num = en - st + 1;if(n > num){bRepeat = true;printf("too many number, to be repeat mode:\n");}int *A = (int*)malloc(n*sizeof(int));memset(A, 0, sizeof(n*sizeof(int)));int cur = 0;int number = Permutation(st, en, n, A, cur, bRepeat);delete [] A ;A = NULL;printf("over!\n");return number;}

n全排列輸出和 n個數的組合(數字範圍a~b)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.