题目
思路
最简单的dfs题之一
只需要一点点小优化
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=55;
int n;
int ans[maxn],s;
void print(int tot) { for(int i=1;i<tot-1;i++) cout<<ans[i]<<"+"; cout<<ans[tot-1]<<endl; }
void dfs(int lst,int rs,int tot){
if(rs<0) return;
if(ans[1]>n/2) return;
if(!rs) { s++,print(tot);return; }
for(int i=lst;i<=rs;i++) ans[tot]=i,dfs(i,rs-i,tot+1);
}
int main()
{
cin>>n,dfs(1,n,1);
return 0;
}
end
完结撒花