1 条题解
-
0117爱好者 (mengqingyu) LV 10 @ 2024-8-27 21:18:36
#include<iostream> using namespace std; int n,num[20],sta[20]; char change(int x) { if(sta[x]==1) return '+'; else if(sta[x]==2) return '-'; else return ' '; } void dfs(int k,int sum,int now,int op) { if(k>=n) { if(op==1) sum+=now; else sum-=now; if(sum==0) { cout<<1; for(int i=1;i<n;i++) cout<<change(i)<<num[i]; cout<<endl; } return; } sta[k]=3; dfs(k+1,sum,now*10+num[k],op); sta[k]=1; if(op==1) dfs(k+1,sum+now,num[k],1); else dfs(k+1,sum-now,num[k],1); sta[k]=2; if(op==1) dfs(k+1,sum+now,num[k],2); else dfs(k+1,sum-now,num[k],2); } int main() { cin>>n; for(int i=1;i<=n;i++) num[i]=i+1; dfs(1,0,1,1); }
- 1
信息
- ID
- 576
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 3
- 上传者