#includeusing namespace std; int n; int k[10],cnt,s[3]={0,1,-1}; string a[7000]; void dfs(int d){ if(d==n+1){ int sum=0,c=1; for(int i=2;i<=n;i++){ if(k[i]){ sum+=c; c=i*k[i]; } else{ if(c>0) c=c*10+i; else c=c*10-i; } } sum+=c; if(sum==0){ a[++cnt]+="1"; for(int i=2;i<=n;i++){ a[cnt]+=k[i]>0?'+':k[i]<0?'-':' '; a[cnt]+=i+'0'; } } return; } for(int i=0;i<=2;i++){ k[d]=s[i]; dfs(d+1); } } int main(){ scanf("%d",&n); dfs(2); for(int i=1;i<=cnt;i++){ cout<
纯DFS,搜就完了



