Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
136657 | 陆妍凯 | N皇后问题 | C++ | 输出超限 | 0 | 3 MS | 244 KB | 710 | 2024-03-09 11:30:35 |
//10!可以直接暴力dfs #include<cstdio> #include<iostream> #include<algorithm> using namespace std; const int NR=20; bool flag=false; int n,d[NR]; bool judge(int x,int y) //判断这个皇后和前面的是否有矛盾 { int i; for(i=1;i<=x-1;i++) if(d[i]==y || i+d[i]==x+y || i-d[i]==x-y) return false; return true; } void dfs(int k) { int i; if(k==n+1) { for(i=1;i<=n;i++) cout<<d[i]<<" "; cout<<endl; } for(i=1;i<=n;i++) if(judge(k,i)==true) { d[k]=i; dfs(k+1); if(flag==true) return; //下一次又会更新掉d[i],无需重置 } return; } int main() { int i; cin>>n; dfs(1); for(i=1;i<=n;i++) cout<<d[i]<<" "; return 0; }