编程求解:
输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,
输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,
使其和等于 m ,要求将其中所有的可能组合列出来.
#include<iostream>
#include<list>
using namespace std;
list<int> factorlist;
void FindFactor(int n,int sum,int result)
{
if(sum <= 0 || n <= 0)
return;
if(sum == n)
{
cout<<n;
//factorlist.reverse();
for(list<int>::iterator iter = factorlist.begin();iter != factorlist.end();iter++)
{
cout<<" + "<<*iter;
}
cout<<" = "<<result<<endl;
//factorlist.reverse();
}
factorlist.push_front(n);
FindFactor(n - 1,sum - n,result);
factorlist.pop_front();
FindFactor(n - 1,sum,result);
}
int main()
{
int sum, n;
cout << "请输入你要等于多少的数值sum:" << endl;
cin >> sum;
cout << "请输入你要从1.....n数列中取值的n:" << endl;
cin >> n;
cout << "所有可能的序列,如下:" << endl;
FindFactor(n,sum,sum);
return 0;
}