C语言全排列

来源:互联网 发布:电话号码数据 编辑:程序博客网 时间:2024/05/17 07:24
#include<iostream>#include<string.h>#include<cstdio>#include<cstdlib>#define MAX_VALUE 30int next[] = {1, 2, 3, 4 };void segnum(int sum, int * pData, int pDepth){if(sum < 0){return;}if(sum == 0){for(int j=0; j<pDepth; j++){printf("%d", pData[j]);printf(" ");}printf("\n");}int i = (pDepth == 0) ? next[0] : pData[pDepth-1];while(i <= sum){pData[pDepth++] = i;segnum(sum-i, pData, pDepth);pDepth--;i = next[i];}}void showResult(int len){for(int i=0; i<=len; i++){next[i] = i+1;}int * pData = new int[MAX_VALUE];segnum(MAX_VALUE, pData, 0);}int main(){showResult(MAX_VALUE);return 0;}

0 0