问题描述:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。程序设计:1、一维数组a[17],数组分成三段,第一段a[0]用来标记八皇后安置完成;第二段a[1,8]用来标记列位置有无子,方便判断列冲突;第三段a[9,16]用来标...
分类:
编程语言 时间:
2014-09-01 01:39:12
阅读次数:
501
摘自:http://blog.csdn.net/theprinceofelf/article/details/6724511八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横...
分类:
其他好文 时间:
2014-08-28 16:52:40
阅读次数:
259
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 = 0; if(cur...
分类:
其他好文 时间:
2014-08-28 13:01:09
阅读次数:
183
其实我没有做到记忆一些已经判定过的状态,增加trace来记忆已判定状态,去掉重复判断#include #define N 9 int q[N] = {0};int not_end = 1;int trace = 0;int cnt = 0;int sum = 0;void print_q() { ....
分类:
其他好文 时间:
2014-08-28 11:15:49
阅读次数:
186
最早看到8皇后应该是上计算机系的什么课?应该是《算法》?好像没有这门课,那最有可能的就是《数据结构》了,我们数学系也有《数据结构》,不过是普及版,要求没有计算机系高,毕竟我们系应用方面的只是一小部分。当时我应该是懂了的吧,不过我不记得我完整的写下来过这个算法,完全没有印象了。不过类似的算法,我应该是...
分类:
其他好文 时间:
2014-08-28 10:57:59
阅读次数:
145
隐隐的感觉到一些不对,我尝试添加对can_put函数做一个统计。理论上将,can_put函数的执行次数就是O(T)CNT: 352, times: 72378real 0m0.008suser 0m0.004ssys 0m0.000sCNT: 352, times: 1222703298real 0...
分类:
其他好文 时间:
2014-08-28 10:55:39
阅读次数:
201
去掉重复判断,这样应该基本没问题了到wiki上去验证数据是否正确:http://zh.wikipedia.org/wiki/%E5%85%AB%E7%9A%87%E5%90%8E%E9%97%AE%E9%A2%98#include #define N 13int q[N] = {0};int not...
分类:
其他好文 时间:
2014-08-27 21:47:08
阅读次数:
276
初级8皇后问题,不是真正的8皇后问题,是该问题的初级条件限制:产生不同行,不同列的组合。typedef struct Spoint{ int x; int y; Spoint() { x = -1; y = -1; }};static Spoint point[8];int Queen8(int.....
分类:
其他好文 时间:
2014-08-27 21:44:08
阅读次数:
274
这回不会爆栈了,但是效率很低,O(n^2)的时间复杂度,需要优化#include #define N 10int q[N+1] = {0};int cnt = 0;void print_q() { int i; for (i=0; i=0 && j>=0; i--,j--) { ...
分类:
其他好文 时间:
2014-08-27 20:23:08
阅读次数:
217
#include #define N 9int q[N] = {0};int cnt = 0;void print_q() { int i; for (i=0; i=0 && j>=0; i--,j--) { if (q[i] == j) return 0; } ...
分类:
其他好文 时间:
2014-08-27 18:31:38
阅读次数:
155