Description会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2...b8,其中bi为相应摆法中...
分类:
其他好文 时间:
2014-08-03 15:01:35
阅读次数:
238
题解:首先,这道题可以用位运算来表示每一行的状态,同八皇后的搜索方法,然后对于限制条件不相互攻击,则只需将新加入的一行左右移动与上一行相&,若是0则互不攻击,方案可行。对于每种方案,则用递推来统计,将前一排所有可以的情况全部加上即可。bit数组记录每个数字二进制位中1的个数,方便计算。if(chec...
分类:
其他好文 时间:
2014-07-21 09:35:58
阅读次数:
184
可以和Haskell , Prolog 一样做到模式匹配,
建立逻辑推到规则,描述问题,得出答案。
from pyDatalog import pyDatalog
pyDatalog.create_atoms( 'N, N1, X, Y, X0, X1, X2, X3, X4, X5, X6, X7' )
pyDatalog.create_atoms( 'ok,queens, nex...
分类:
编程语言 时间:
2014-07-19 23:31:49
阅读次数:
377
本章习题很经典:
3-4判断单位矩阵
5、矩阵乘法
8、八皇后问题
其中八皇后问题我感觉存在问题,回溯法我运用的不好就先不挂了。
题目请见 http://download.csdn.net/download/wangpegasus/5701765
3、
bool identity_matrix(int matrix[10][10])
{
int length = 10;...
分类:
其他好文 时间:
2014-07-19 13:41:20
阅读次数:
182
DFS题,类似八皇后问题,题目有点长,看了老半天才看懂。特别是上下左右数字要注意。还要注意剪枝,另外空行不能多输,输多了不能AC(运行速度有点慢,能AC但1940ms,估计还有待优化) 1 #include 2 #include 3 const int maxn=25+5; 4 int num[ma...
分类:
其他好文 时间:
2014-07-18 09:24:14
阅读次数:
213
一. 功能需求:
1. 能够让玩家摆棋,并让电脑判断是否正确
2. 能让电脑给予帮助(给出所有可能结果)
3. 实现悔棋功能
4. 实现重置功能
5. 添加点按键音效果更佳
二. 总体设计计:
1. 核心算法:
递归实现(回溯算法):
思路:按行分别安排皇后(Q),Q数目目前为8.
Q1从第一行第一列开始到最后一列,先放在第一列;
...
分类:
其他好文 时间:
2014-07-12 17:44:21
阅读次数:
127
(一)八皇后问题
(1)回溯法
#include
#include
#define MAXN 100
using namespace std;
int tot = 0, n = 8;
int C[MAXN];
void search(int cur) {
if(cur == n) ++tot; //递归边界,只要走到了这里,所有皇后必然不冲突
else for(in...
分类:
其他好文 时间:
2014-07-05 11:09:52
阅读次数:
356
1、回溯法用一维数组记录皇后的位置。数组的下标代表皇后所处的行,下标对应的值代表皇后所处的列。用count记录皇后的个数,当count小于queen数时,在循环体中寻找合适位置的queen。寻找queen:从列1依次寻找,满足条件则count+1,继续从列1处寻找下一个queen。如全部找完没找到合...
分类:
其他好文 时间:
2014-06-26 16:17:30
阅读次数:
183
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26614999 剑指offer上解决八皇后问题,没实用传统的递归或非递归回溯法,而是用了非常巧妙的全排列法。 先说下八皇后问题:在8 X 8的国际象棋上摆放八个皇后,使其不能相互攻击,即随.....
分类:
其他好文 时间:
2014-06-22 23:52:46
阅读次数:
398