(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2) 给定一个数字n,求解出所有和为n的整数组合,要求组合按照递增方式展示,而且唯一。
#include "iostream"
#include "list.h"
using namespace std;
list<int> ls;
void findfactor(int sum)
{
if(sum<0)
return;
if(sum==0)
{
list<int>::iterator it=ls.begin();
while(it!=ls.end() && ls.size()!=1)
{
cout<<*it;
if(++it!=ls.end())
cout<<'+';
}
cout<<endl;
return;
}
int i=ls.size()==0 ? 1:ls.back();
for(;i<=sum;i++)
{
ls.push_back(i);
findfactor(sum-i);
ls.pop_back();
}
}
int main()
{
findfactor(4);
}