7-7 整数分解为若干项之和
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int n;
int x[N];
int cnt=0;
int sum=0;
vector<int> g;
void dfs(int u,int p)
{
if(u==0)
{
printf("%d=",n);
for(int i=0;i<g.size();i++)
{
if(i<g.size()-1) cout<<g[i]<<"+";
else cout<<g[i];
}
cnt++;
if(cnt%4==0) cout<<endl;
else cout<<";";
return ;
}
int mid=0;
if(u%2==0) mid=u/2;
else mid=u/2+1;
for(int i=u-1;i>=mid;i--)
{
if(u-i>=p)
{
g.push_back(u-i);
dfs(i,u-i);
g.pop_back();
}
}
g.push_back(u);
printf("%d=",n);
for(int i=0;i<g.size();i++)
{
if(i<g.size()-1) cout<<g[i]<<"+";
else cout<<g[i];
}
cnt++;
if(cnt%4==0) cout<<endl;
else if(u!=n) cout<<";";
g.pop_back();
}
int main()
{
//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
dfs(n,1);
}