求正整数n所有可能的和式的组合

来源:互联网 发布:修改rdp端口 编辑:程序博客网 时间:2024/05/17 05:50

一道人搜面试题:求正整数n所有可能的和式的组合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2)

从输出结果看,可以存在"1+1+2"和"2+1+1"这样的组合,我有一个思路,类似字符串全排列,直接上代码:

void PrintSumN(vector<int>& a, int num){if(num == 0){                //输出向量a中的内容                PrintVec1(a);printf("\n");return;}for(int i=1; i<= num; ++i){a.push_back(i);PrintSumN(a, num - i);a.pop_back();}}

如果输入4,输出结果为:

1 1 1 1
1 1 2
1 2 1
1 3
2 1 1
2 2
3 1
4

0 0