题目:
分析:虽然是一道很基本的算法题,但是为什么放到精华呢?
因为自己之前的搜索大部分都是进行bool返回判断。
但是最近做的几道题都不是这样,没有返回值。
代码:
#include<bits/stdc++.h>
using namespace std;
int m;
void f(int rest,int num,vector<int> v)
{
if(rest==0)
{
if(v.size()==1) return;
cout<<v[0];
for(int i=1;i<v.size();i++) cout<<'+'<<v[i];
cout<<endl;
return;
}
if(rest<num)
{
return;
}
for(int i=rest/num;i>=0;i--)
{
vector<int> v2=v;
for(int j=0;j<i;j++) v2.push_back(num);
f(rest-num*i,num+1,v2);
}
}
int main()
{
cin>>m;
vector<int> v;
f(m,1,v);
}