样例没过,输出顺序错了……()()
#include<bits/stdc++.h>
using namespace std;
int n,a[10];
char f(int k){
if(k==1) return '+';
else if(k==2) return '-';
else return ' ';
}
bool check(){
int k=1,s=0,sum=0;
for(int i=1;i<=n;i++){
s=s*10+i;
if(a[i]==1){
sum+=s*k;
s=0;
k=1;
}else if(a[i]==2){
sum+=s*k;
s=0;
k=-1;
}
}
sum+=s*k;
return !sum;
}
void dfs(int now){
if(now==n){
if(check()){
for(int i=1;i<n;i++) printf("%d%c",i,f(a[i]));
printf("%d\n",n);
}
return;
}
for(int i=1;i<=3;i++){
a[now]=i;
dfs(now+1);
}
}
int main(){
scanf("%d",&n);
dfs(1);
return 0;
}