三种方法,DFS一下
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int n;
void dfs(int deep,int sum,int num,string s)
{
if(deep==n)
{
if(sum+num==0)
cout<<s<<endl;
return;
}
if(num>0)
dfs(deep+1,sum,num*10+deep+1,s+" "+char(deep+1+48));
else
dfs(deep+1,sum,num*10-deep-1,s+" "+char(deep+1+48));
dfs(deep+1,sum+num,deep+1,s+"+"+char(deep+1+48));
dfs(deep+1,sum+num,-1*deep-1,s+"-"+char(deep+1+48));
}
int main()
{
freopen("zerosum.in","r",stdin);
freopen("zerosum.out","w",stdout);
cin>>n;
dfs(1,0,1,"1");
return 0;
}