八皇后問題
在n*n格的西洋棋上擺放n個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。
輸入: n的大小,即棋盤的大小
輸出:棋盤(用1表示皇后.0表示空著的棋盤)
#include
#include
#include
#include
#define max_board 30
using namespace std;
int board_size;
int queen[max_board]
[max_board]
;//構造的棋盤
int count=0;
int sum;
//皇后初始化
void
initialize()
//列印皇后棋盤
void
print()
printf
("\n");
}printf
("\n\n");
}//判斷皇后是否設防
bool unguarded
(int line,
int col)
void
insert
(int m,
int n)
void
remove
(int m,
int n)
//回溯函式
void
solve_from
(int line,
int col)
else}}
}int
main()
printf
("this is the queens game.\nwhat is the size of the board?\n");
scanf
("%d"
,&board_size);}
}
資料結構演算法 八皇后問題
八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848 年提出 在 88 格的西洋棋上擺放八個皇后,使其不能互相攻擊,即 任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法 92 理論上應該建立乙個二維陣列來表示棋盤,但是實際上可以通...
資料結構與演算法7 八皇后問題
在8 8大小的西洋棋棋盤上擺放8個皇后棋子,8個皇后不能互相攻擊,即不能在同行同列同斜線上,問共有多少種擺法?處理此類問題不可暴力列舉,巧用遞迴演算法結構和回溯演算法思想,能夠快速解決問題。第乙個皇后放第一列位置1。第二個皇后放第二列位置1,有衝突,往後放。當三個 放到第n個 n 8 後續還有未放置...
資料結構 八皇后演算法
八皇后的基本要求是這樣的 在乙個8 8的矩陣上面放置8個物體,乙個矩陣點只允許放置乙個物體,任意兩個點不能在一行上,也不能在一列上,不能在一條左斜線上,當然也不能在一條右斜線上。參考網上資料改寫 如下 include include include includeusing namespace st...