【深搜】纯洁的皇后
来源:互联网 发布:理财模拟软件 编辑:程序博客网 时间:2024/04/30 12:21
题目:纯洁的皇后 rqnoj672
题目描述
当年弱弱的ALEJ刚学会pascal的时候,HSW已叱咤机房很久了。有一天,ALEJ小朋友怀着一颗CJ的稚嫩心灵向HSW请教八皇后的问题。
ALEJ:“八皇后怎样解啊,HSW?”
HSW:“嘿嘿嘿,八皇后可以扩展为N皇后呢,嘿嘿嘿”
ALEJ:“那N皇后怎么解呢,HSW?”
HSW:“嘿嘿嘿……嘿嘿嘿……嘿嘿嘿嘿……嘿嘿嘿嘿嘿……嘿嘿嘿……嘿……嘿嘿嘿……嘿嘿嘿……嘿嘿嘿……嘿嘿,看我的Wsing Dance!”
“Wsing Dance是什么算法?”ALEJ正想着,突然HSW变成了N个,并且其中一部分开始跳起了Wsing Dance。由于HSW的分身太多了,再加上耳边缠绕着的“嘿嘿”声,纯洁的ALEJ也看得头晕目眩。
ALEJ发现只有两个HSW在一行,一列,或一条对角线上时,两个HSW才会跳起舞来,而机房俯视图正好是一个N行N列的棋盘,ALEJ必须尽快移动HSW们(每个格子里只能有一个HSW),使他们不再跳Wsing Dance。ALEJ连N皇后都不会解,这下得请聪明而又纯洁的你来帮忙求出所有可能方案数了~
【数据规模】
N<=13
输入格式
输入文件仅包括一行一个正整数,N。
输出格式
输出文件包括一行一个正整数,表示所有可能的方案数。
样例输入
样例输出
相信大家看了题都应该知道是N皇后的翻版了吧
话不多说,Pascal Code就看N皇后的那道题http://www.cnblogs.com/oijzh/archive/2012/08/18/2645665.html
这里提供C++ Code
#include<cstdio>int n,ans;bool h[20],lie[20],ys[50],zs[100];void dfs(int i){ if(i>n){ans++;return;} for(int j=1;j<=n;j++) if(!h[i] && !lie[j] && !ys[i+j] && !zs[i-j+40])//[i-j+40]保证下标不为负数 { h[i]=true;lie[j]=true;ys[i+j]=true;zs[i-j+40]=true; dfs(i+1); h[i]=false;lie[j]=false;ys[i+j]=false;zs[i-j+40]=false; }}int main(){ freopen("rqn672.in","r",stdin); freopen("rqn672.out","w",stdout); scanf("%d",&n); dfs(1); printf("%d",ans); return 0;}
- 【深搜】纯洁的皇后
- 纯洁的秘密
- 纯洁的友谊
- 纯洁的心--佩雷尔曼
- 纯洁的买卖
- 纯洁
- 纯洁
- 保持我们母语的纯洁
- 人生最纯洁的乐趣
- 孩子眼中纯洁的爱
- 【完全背包】纯洁的买卖
- 我是一个纯洁的好孩子
- 请保持CSDN的纯洁
- 内心纯洁的人前途无量
- 我是个纯洁的码农~
- 一个简单、纯洁的PHP分页类
- hdu 3966 最纯洁的树链剖分
- 原来这个世界还有这么纯洁的爱情!
- 【深搜】数的计算
- 【枚举】Fish学数学
- 【宽搜】校园迷宫
- 【宽搜】多多下棋
- 【深搜】N皇后加强版
- 【深搜】纯洁的皇后
- 【递归】占内存的递归函数
- 【枚举】[NOIP2008]火柴棒等式
- 【资料】搜索
- 数据库
- 【最短路】奇怪的电梯
- 【最短路】星门跳跃
- 【最短路】Mato完整版学体育
- 【最小生成树】拜年