#include<iostream>
#include<string.h>
#include<cstdio>
#include<cstdlib>
#define MAX_VALUE 30
int 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;
}
C语言全排列
最新推荐文章于 2023-03-15 09:54:03 发布