1. 程式人生 > >求正整數n所有可能的和式的組合

求正整數n所有可能的和式的組合

(如;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);
	
}