USACO training course Checker Challenge N皇后 /// oj10125
Posted _Jessie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了USACO training course Checker Challenge N皇后 /// oj10125相关的知识,希望对你有一定的参考价值。
...就是N皇后
输出前三种可能排序
输出所有可能排序的方法数
vis[0][i]为i点是否已用
vis[1][m+i]为i点副对角线是否已用 m+i 为从左至右第 m+i 条副对角线
vis[1][m+n-i]为i点主对角线是否已用 m+n-i 为从右至左第 m+n-i 条主对角线
#include<iostream> #include<algorithm> #include<stdio.h> #include<cstring> #include<math.h> using namespace std; int n,cnt; int ans[100],vis[5][50]; void DFS(int m) { if(m==n+1) { cnt++; if(cnt<=3) { for(int i=1;i<n;i++) printf("%d ",ans[i]); printf("%d\n",ans[n]); } return ; } for(int i=1;i<=n;i++) { if(!vis[0][i]&&!vis[1][m+i]&&!vis[2][m-i+n]) { vis[0][i]=vis[1][m+i]=vis[2][m-i+n]=1; ans[m]=i; DFS(m+1); vis[0][i]=vis[1][m+i]=vis[2][m-i+n]=0; } } } int main() { while(~scanf("%d",&n)) { memset(ans,0,sizeof(ans)); cnt=0; DFS(1); printf("%d\n",cnt); } return 0; }
以上是关于USACO training course Checker Challenge N皇后 /// oj10125的主要内容,如果未能解决你的问题,请参考以下文章
[题解]USACO 1.3 Ski Course Design
[USACO07OCT]障碍路线Obstacle Course