8皇后及其普及(N) 小試牛刀(1)

2022-07-26 02:24:09 字數 1200 閱讀 7674

八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於2023年提出:在8x8格的西洋棋上擺放八個皇后,使其不能互相攻

擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 高斯認為有76種方案。2023年在柏林的象棋雜誌上不同的作者發表了40種不同的解,後來有人用圖論的方法解出92種結果。計算機發明後,有多種計算機語言可以解決此問題。——————————摘自《度娘百科》

八皇后問題是回溯與搜尋的乙個很典型的例子。演算法關鍵就是矩陣上。如果在同一行,則行號相同(列同上)。如果都在「/」對角線上,則行列和相同;如果都在「\"對角線上,則行列差相同。

我們可以以行為條件搜尋,放置乙個以後定下對角線和列號,就像下面的程式:

1 #include2 #include3 #include4 #include5

using

namespace

std;

6bool d[100]=,b[100]=,c[100]=; //

定義行列陣列,對角線陣列。

7int sum=0,a[100];8

int search(int);9

intprint();

10int

main()

1114

int search(int

i)1530}

31int

print()

32

程式是這樣的:

其中」92「代表方案,後面的數是第幾列(行是從一到八)

解釋一下就是(1,8)(2,4)(3,1)(4,3)(5,6)(6,2)(7,7)(8,5)

拓展一下就是變成n皇后問題:

#include#include

#include

#include

using

namespace

std;

bool d[100]=,b[100]=,c[100]=;

int sum=0,a[100],n; //

注意裡面多了個n。

int search(int

);int

print();

intmain()

int search(inti)}

intprint()

1 小試牛刀 1

1.echo e 包含轉義序列的字串 2.彩色列印 文字 重置 0,黑 30,紅 31,綠 32,黃 33,藍 34,洋紅 35,青 36,白 37 背景 40,41,42,43,44,45,46,47 example 1 echo e e 1 31m zhangjing e 0m 紅字 2 ech...

Linux Shell指令碼攻略1 小試牛刀 1

shell指令碼通常是乙個以shebang bin bash 起始的文字檔案,其中 bin bash是bash的直譯器命令路徑。shell指令碼有兩種執行方式 另一種則是授予指令碼執行許可權,將其變為可執行檔案。在bash中,每個命令或是命令序列是通過分號或換行符來分隔的,如 cmd1 cmd2注釋...

Python3爬蟲(1)小試牛刀

最近學習了python3的爬蟲機制!也就是通過使用urllib模組傳送http請求來獲取網頁的html原始碼,然後使用正則匹配出自己想要收集的資訊!注意python2中所用的模組不一樣 下面小試牛刀,做了乙個例子!附上需求和原始碼!儲存形式 將從網頁上獲取到的資訊分行寫入.txt檔案中 邏輯 引入u...