Untitled
By: a guest | Jan 23rd, 2010 | Syntax:
C++ | Size: 0.84 KB | Hits: 99 | Expires: Never
#include <iostream>
#include <list>
using namespace std;
list<int> num_list;
void print_list()
{
list<int>::iterator it;
bool is_first = true;
for(it = num_list.begin(); it != num_list.end(); it++)
{
if(!is_first)
cout << " + ";
else
is_first = false;
cout << *it;
}
cout << endl;
}
void SumOptions_r(int sum, int cur_sum, int cur_num)
{
if(sum == cur_sum)
{
print_list();
return;
}
int i;
for(i = cur_num; i>= 1; i--)
{
if(i + cur_sum > sum)
continue;
num_list.push_back(i);
SumOptions_r(sum, cur_sum + i, i);
num_list.pop_back();
}
}
void SumOptions(int num)
{
SumOptions_r(num, 0, num);
}
void main()
{
SumOptions(4);
getchar();
}