提交时间:2023-11-04 09:06:28

运行 ID: 108603

#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> using namespace std; int n,s,total; int mem[10001]; bool judge(){ s=sizeof(mem); int sum=0; for(int i=0;i<s;i++){ sum+=mem[i]; } if(sum==n){ return true; } else return false; } void print(){ for(int i=0;i<s-1;i++){ cout<<n<<"="<<mem[i]<<"+"; } cout<<mem[s-1]<<endl; } void dfs(int m){ int id=0; if(judge()==true){ sort(mem,mem+s); print(); memset(mem,0,s); total++; return ; } for(int i=1;i<=n-1;i++){ mem[id++]=i; dfs(i); } } int main(){ freopen("split.in","r",stdin); freopen("split.out","w",stdout); cin>>n; dfs(n); cout<<"total="<<total<<endl; return 0; }