4 条题解
-
3
#include <bits/stdc++.h> #define N 100 using namespace std; int n,i,tot; int a[N][N],b[N]; int c[N][N]; int d[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; void dfs(int step) { if(step==8+1) { tot++; for(int i=1;i<=8;i++) a[tot][i]=b[i]; return; } for(int i=1;i<=8;i++) { if(c[0][i]==0&&c[1][step+i]==0&&c[2][step-i+8]==0) { c[0][i]=1; c[1][i+step]=1; c[2][step-i+8]=1; b[step]=i; dfs(step+1); c[0][i]=0; c[1][i+step]=0; c[2][step-i+8]=0; } } } int main() { cin>>n; dfs(1); while(n--) { cin>>i; for(int j=1;j<=8;j++) cout<<a[i][j]; cout<<endl; } return 0; }
-
0
using namespace std; int a[100],x[100],n;//a数组用来存放每个皇后的列坐标 void dfs(int step){//放第step个皇后,也代表该皇后的行坐标 if(step==n+1){ for(int i=1;i<=n;i++) cout<<a[i]<<" "; cout<<endl; return; } for(int i=1;i<=n;i++){//当前皇后选择的列坐标,当前皇后的坐标为:step,i int j; for(j=1;j<step;j++){//与之前的皇后做对比,之前皇后的坐标为:j,a[j] if(i==a[j]||abs(step-j)==abs(i-a[j]))//如果存在同列或者同对角线 break;//就跳出此次循环,继续下个位置的尝试 } if(j==step){//说明这个位置与前面的皇后都不冲突 a[step]=i; dfs(step+1); } } return; } int main(){ cin>>n; dfs(1); return 0; }
-
0
#include <stdio.h> int ans[92][8], n, b, i, j, num, hang[8]; void queen(int i){ int j, k; if(i == 8){ for(j = 0; j < 8; j++) ans[num][j] = hang[j] + 1; num++; return; } for (j=0; j<8; j++){ for(k=0; k<i; k++) if( hang[k] == j || (k - i) == (hang[k] - j) || (i - k) == (hang[k] - j )) break; if (k == i) { hang[i] = j; queen(i + 1); } } } int main( ){ num=0; queen(0); scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%d", &b); for(j = 0; j < 8; j++) printf("%d", ans[b - 1][j]); printf("\n"); } }
-
0
#include <bits/stdc++.h> #define N 100 using namespace std; int n,i,tot; int a[N][N],b[N]; int c[N][N]; int d[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; void dfs(int step) { if(step==8+1) { tot++; for(int i=1;i<=8;i++) a[tot][i]=b[i]; return; } for(int i=1;i<=8;i++) { if(c[0][i]==0&&c[1][step+i]==0&&c[2][step-i+8]==0) { c[0][i]=1; c[1][i+step]=1; c[2][step-i+8]=1; b[step]=i; dfs(step+1); c[0][i]=0; c[1][i+step]=0; c[2][step-i+8]=0; } } } int main() { cin>>n; dfs(1); while(n--) { cin>>i; for(int j=1;j<=8;j++) cout<<a[i][j]; cout<<endl; } return 0; }
- 1
信息
- ID
- 829
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 5
- 标签
- 递交数
- 132
- 已通过
- 52
- 上传者