输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数,
使其和等于 m ,要求将其中所有的可能组合列出来
n小于m/2
-
vector<int> list1; //01背包问题
-
-
void find_factor(int sum, int n)
-
{
-
if(n<=0||sum<0)
-
{
-
return;
-
}
-
if( sum==0 )
-
{
-
for(vector<int>::iterator iter=list1.begin(); iter<list1.end()-1; iter++)
-
{
-
cout<<*iter<<\"+\";
-
}
-
cout<<*iter++;
-
cout<<endl; //后置++的运算符的优先级高于*
-
return;
-
}
-
list1.push_back(n);
-
find_factor(sum-n, n-1);
-
list1.pop_back();
-
find_factor(sum, n-1);
-
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29012686/viewspace-1144537/
,如需转载,请注明出处,否则将追究法律责任。