| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 78471 | sh25_shenpy | 八皇后问题 | C++ | 解答错误 | 0 MS | 252 KB | 1199 | 2025-12-26 15:47:31 |
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> using namespace std; int a[50][50],yi[20],xjay[50],xjiany[50]; int n,c=0,s=0; void out() { if(c>=3)c++; else { for(int i=1; i<=n; i++) { for(int k=1;k<=n;k++){ if(a[i][k]==1)cout<<k<<" "; } } cout<<endl; c++; } }//输出前三组解 void zhanlin(int x,int y){ a[x][y]=1; yi[y]=1; xjiany[x-y+n]=1; xjay[x+y]=1; }//在(x,y)放皇后 void fangqi(int x,int y){ a[x][y]=0; yi[y]=0; xjiany[x-y+n]=0; xjay[x+y]=0; }//拿走(x,y)的皇后 int isok(int x,int y){ if(a[x][y]==0&&yi[y]==0&&xjiany[x-y+n]==0&&xjay[x+y]==0)return 0; return 1; }//该点是否可以放皇后 void dfs(int x) { if(x==n+1) { out(); } else { for(int k=1; k<=n; k++) { if(isok(x,k)==0){ zhanlin(x,k); dfs(x+1); fangqi(x,k); } } } }//深搜 int main() { int i,k; cin>>n; dfs(1); cout<<c; return 0; }