Description

在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 
你的任务是,对于给定的N,求出有多少种合法的放置方法。

 

Input

共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
 

Output

共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
 

Sample Input

1
8
5
0
 

Sample Output

1
92
10
 
 
题目要求:输入n
     建立一个n行n列的矩阵,矩阵中能放n个皇后,任意两个皇后不能再同一行或者同一列,任意两个皇后的连线不能与边界成∠45°
     问有多少种排列方法
分析:根据要求可以推出每一行每一列都至少有一个皇后
   用搜索寻找第x行的皇后放在哪一列上了,标记上这个位置,同时把其他不能放的位置也都标记下
   最后一行找完之后进入第dfs(n+1),这个时候方法数加一
 
 
代码:

/*
注意:1:写死循环要么注意跳出条件,要么就别写
2: 复制粘贴的前面用的代码的时候一定记得把所有需要修改的条件都改了
*/ #include <stdio.h>
#include <string.h>
using namespace std;
int cnt, n;
int vis[][]; void dfs(int x)
{
if(x == n+)
{
cnt++;
return;
}
for(int i = ; i <= n; i++) ////////////////////////////////////////
{
if(!vis[x][i])
{
for(int j = x; j <= n; j++)
{
vis[j][i]++;
}
for(int j = ; ; j++)
{
if(x+j <= n)
{
if(i+j <= n)
vis[x+j][i+j]++;
if(i - j >= )
vis[x+j][i-j]++;
}
else
break;//////////////////////////////////////////////////////
}
dfs(x+);
for(int j = x; j <= n; j++)
vis[j][i]--;
for(int j = ; ; j++)
{
if(x+j <= n)
{
if(i+j <= n)
vis[x+j][i+j]--;
if(i - j >= )
vis[x+j][i-j]--;
}
else
break;/////////////////////////////////////////////////////////////////
}
}
}
}
int main()
{
int ans[], i;
memset(ans, , sizeof(ans));
for(i = ; i <= ; i++)
{
n = i;
cnt = ;
memset(vis, , sizeof(vis));
dfs();
ans[i] = cnt;
//printf("ans[%d] = %d\n", i, ans[i]);
}
while(scanf("%d", &n), n)
printf("%d\n", ans[n]);
return ;
}

C - N皇后问题(搜索)的更多相关文章

  1. [ An Ac a Day ^_^ ] hdu 2553 N皇后问题 搜索

    曾经想过一天一AC 坚持下来的确不容易额 (我是没坚持下来 尽量以后坚持…… 经典的N皇后问题 搜索的入门问题 学了这么久竟然一直没敲过 今天敲一下…… 这道题也不是很简单额 纯暴力就超时了 要打一下 ...

  2. OpenJudge1700:八皇后问题 //不属于基本法的基本玩意

    1700:八皇后问题//搜索 总时间限制:  10000ms 内存限制:  65536kB 描述 在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方. 输入 无输入. 输出 按给定顺序和 ...

  3. BASIC-27_蓝桥杯_2n皇后问题

    题目: 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一 ...

  4. N皇后解法以及位运算优化

    N皇后解法以及位运算优化 观察棋盘,要求皇后之间不能处在同行同列同一条斜线,求使得每行都有一个皇后的放置方法共有多少种. 每尝试放置一个皇后,都可以把该位置所在的行.列标号用一个数组标记,含义表示该行 ...

  5. BZOJ 1087 互不侵犯King (位运算)

    题解:首先,这道题可以用位运算来表示每一行的状态,同八皇后的搜索方法,然后对于限制条件不相互攻击,则只需将新加入的一行左右移动与上一行相&,若是0则互不攻击,方案可行.对于每种方案,则用递推来 ...

  6. LeetCode: 【L4】N-Queens 解题报告

    [L4]N-Queens 解题报告 N-Queens Total Accepted: 16418 Total Submissions: 63309 My Submissions The n-queen ...

  7. 算法设计与分析——n后问题(回溯法+位运算)

    一.问题描述 在n×n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 二.算法设计 解n后问题的回溯算法描述如下: #include ...

  8. N皇后//搜索入门

    P1080 N皇后 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列只有一个,每条 ...

  9. HDU(搜索专题) 1000 N皇后问题(深度优先搜索DFS)解题报告

    前几天一直在忙一些事情,所以一直没来得及开始这个搜索专题的训练,今天做了下这个专题的第一题,皇后问题在我没有开始接受Axie的算法低强度训练前,就早有耳闻了,但一直不知道是什么类型的题目,今天一看,原 ...

随机推荐

  1. C/C++指针知识整理(一)

    1.指针(变量)的类型 把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型.这是指针本身所具有的类型. (1)int*ptr; //指针的类型是 int* (2) char*ptr;//指针 ...

  2. MVC进阶之路:依赖注入(Di)和Ninject

    MVC进阶之路:依赖注入(Di)和Ninject 0X1 什么是依赖注入 依赖注入(Dependency Injection),是这样一个过程:某客户类只依赖于服务类的一个接口,而不依赖于具体服务类, ...

  3. Android程序报错 Connection refused 处理

    在用Android测试JSON数据解析的时候,报了这样一个异常: java.net.ConnectException: localhost/ - Connection refused 原来模拟器默认把 ...

  4. SQLServer 2008的组成

    SQLServer 2008的组成: 1.主要数据库文件:有且只有一个,文件后缀为.mdf. 2.日志文件:至少有一个,文件后缀为.ldf. 3.次要数据库文件:任意个,文件后缀为.ndf.

  5. jquery简单判断PC端还是移动端

    $(function(){ if (!navigator.userAgent.match(/mobile/i)) { //PC端 }else{ //移动端 } })

  6. android程序启动画面之Splash总结[转]

    方法一: 很多应用都会有一个启动界面.欢迎画面慢慢隐现,然后慢慢消隐.实现这种效果的方法有两种(暂时只发现两种)1.使用两个Activity,程序启动时候load第一张Activity,然后由tick ...

  7. 扩大或缩小undo表空间

    ***********************************************声明*************************************************** ...

  8. xcode 工具栏中放大镜的替换的简单说明

    1.如果是在打开的文档范围内:       查找: Command+ F       替换: Option+Command+F                   Replace All   是全部替 ...

  9. BootStrap 智能表单系列 六 表单数据绑定(编辑页面的数据绑定)

    本章介绍如何在生成表单后,将一个model的数据展示到form表单中(一般用于编辑页面) 代码如下(连接地址:https://github.com/xiexingen/Bootstrap-SmartF ...

  10. 深入理解 IE haslayout

    转载自Bubblings Blog 原文地址:http://riny.net/2013/haslayout/ 1.什么是haslayout layout是windows IE的一个私有概念,它决定了元 ...