《八皇后问题的实现(从简单到难得各种解法)》由会员分享,可在线阅读,更多相关《八皇后问题的实现(从简单到难得各种解法)(6页珍藏版)》请在金锄头文库上搜索。
1、八皇后问题的实现(C 语言)八皇后问题主要靠回溯的方法实现, 与迷宫的实现相似, 但又困难了一些. 如迷宫的路径不因为上一步而改变, 八皇后的每一步都受约束于以前的步数 , 并且, 迷宫只要找出一条路径就行,但八皇后则有很多的解法 . 等等.#include #define N 8 / 定义棋盘的格数, 通过改变,也可以是 4 皇后, 16 皇后, 9 皇后什么的.int chessNN = 0; / 棋盘int count = 0; / 有多少种放法int canput(int row, int col) / 确定某一格能不能放int i,j;for(i = 0; i #include in
2、t check(int a,int n)int i,j;for(i=2;i#include int check(int a,int n)int i;for(i=1;i#include int a9 = 0; int n = 8, count = 0; int check(int a,int n)int i,j;for(i=2;i n) /kn:即 k8 表示最后一个皇后摆放完毕 printf(第%d 种情况:,+count);for (i = 1; i = n; i+)printf(%d,%d) ,i,ai);/打印情况 printf(n); else /8 个皇后未全部摆放完毕 for (i = 1; i = n; i+)/摆放第 k 个皇后时 /依次从列顶端开始搜索,一直到列底端,直到找到合适位置,如果未找到,自动返回上层递归ak = i; if (check(a,k)/不冲突 Queens8(k+1);/递归摆放下一个皇后 return; main()Queens8(1);