2 条题解
-
0
#include<bits/stdc++.h> using namespace std; int aa[30], bb[30], cc[30], ans, n; void dfs(int a, int b, int c) { if(c == n) { ans++; for(int i = 1; i <= n; i++) printf("%d", cc[i]); printf("\n"); if(ans == 20) exit(0); } else { if(b > 0) { cc[c + 1] = bb[b]; bb[b] = 0; dfs(a, b - 1, c + 1); bb[b] = cc[c + 1]; cc[c + 1] = 0; } if(a > 0) { bb[b + 1] = aa[a]; aa[a] = 0; dfs(a - 1, b + 1, c); aa[a] = bb[b + 1]; bb[b + 1] = 0; } } } int main() { scanf("%d", &n); for(int i = n; i >= 1; i--) aa[i] = n - i + 1; ans = 0; dfs(n, 0, 0); return 0; } -
0
#include<bits/stdc++.h> using namespace std; int aa[30],bb[30],cc[30],ans,n; void dfs(int a,int b,int c) { if(c==n) { ans++; for(int i=1;i<=n;i++) printf("%d",cc[i]); printf("\n"); if(ans==20)exit(0); } else { if(b>0) { cc[c+1]=bb[ b ]; bb[ b ]=0; dfs(a,b-1,c+1); bb[ b ]=cc[c+1]; cc[c+1]=0; } if(a>0) { bb[ b+1 ]=aa[a]; aa[a]=0; dfs(a-1,b+1,c); aa[a]=bb[ b+1 ]; bb[ b+1 ]=0; } } } int main() { scanf("%d",&n); for(int i=n;i>=1;i--)aa[i]=n-i+1; ans=0;dfs(n,0,0); return 0; }
- 1
信息
- ID
- 1269
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 303
- 已通过
- 83
- 上传者