在n × m 的棋盘上放两个互相攻击的皇后,问有多少种方法这道题重点不在于编程,而是数学公式的推导。其中还用到了Σ(i2)的公式,看来我高中数学没白学,嘎嘎至于推导过程,看大白书吧,嘿嘿。对了,书中有一步貌似有个小错误,不过不影响结果 1 //#define LOCAL 2 #include 3 ....
分类:
其他好文 时间:
2014-08-27 09:17:37
阅读次数:
204
初级8皇后问题,不是真正的8皇后问题,是该问题的初级条件限制:产生不同行,不同列的组合。
typedef struct Spoint
{
int x;
int y;
Spoint()
{
x = -1;
y = -1;
}
};
static Spoint point[8];
int Queen8(int n, int cur)
{
static int iCount...
分类:
其他好文 时间:
2014-08-26 19:45:46
阅读次数:
137
马上又要秋招了,赶紧复习下基础知识。这里复习下二叉树和图的深搜与广搜。从图的遍历说起,图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search)。图搜索的经典应用走迷宫、N皇后、二叉树遍历等。遍历:定义按某种顺序访问“图”中所有的节点。...
分类:
其他好文 时间:
2014-08-24 12:58:32
阅读次数:
8475
八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。...
分类:
其他好文 时间:
2014-08-19 20:51:25
阅读次数:
192
本文参考Matrix67的位运算相关的博文。顺道列出Matrix67的位运算及其使用技巧 (一) (二) (三) (四),很不错的文章,非常值得一看。 主要就其中的N皇后问题,给出C++位运算实现版本以及注释分析。 皇后问题很经典,就不再赘述问题本身,解决皇后问题,一般采用的都是深搜DFS+回溯.....
分类:
其他好文 时间:
2014-08-17 22:45:32
阅读次数:
231
题意:。。。
典型的深搜,就是处理对角线的时候有些意外。
代码(注释掉的就是深搜,因为我不打表的话 TL):
#include
int c[11], n, ans;
int res[10] = {1, 0, 0, 2, 10, 4, 40, 92, 352, 724};
/*void dfs(int cur)
{
if(cur == n) {
++ans;
return ;
}
...
分类:
其他好文 时间:
2014-08-17 15:36:32
阅读次数:
146
N皇后问题的变种,要求直接输出N皇后的解法数目。这道题可以在N-Queens I的基础上增加计数功能,在每求得一个成功的解时(行数为N时)使计数变量递增即可。题目不要求输出具体的解法,因此可以做一点优化,使用position数组用来表示皇后的位置,position[i]的值表示第i行的皇后所处的列,这样子省却字符串数组的开销同时判断是否合法的isValid函数也更加简洁。...
分类:
其他好文 时间:
2014-08-17 13:08:22
阅读次数:
238
非常经典的N皇后问题:在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一对角线上的皇后都会自动攻击)。...
分类:
其他好文 时间:
2014-08-17 11:49:02
阅读次数:
181
1. 高精度这题略水,字符串可过,还不加压位等,操作只有BitShift和add/sub,不过编程复杂度有些高.(输出都是二进制我能说些什么...)2. N皇后问题 (警告! 不是平时你见到的N皇后问题...是一道Hash的模拟题,N皇后的位置都给你了,就是统计)二级标题很详细了,搜索那些解N皇后问...
分类:
其他好文 时间:
2014-08-15 01:28:07
阅读次数:
284
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。
求解过程:
采用遍历的办法,就是...
分类:
其他好文 时间:
2014-08-13 18:49:47
阅读次数:
218