Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
78471 sh25_shenpy 八皇后问题 C++ 解答错误 0 MS 252 KB 1199 2025-12-26 15:47:31

Tests(0/1):


#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; }


测评信息: