8皇后問題總結

2022-03-06 18:34:39 字數 967 閱讀 3748

//

為了鞏固總結自己所學的知識,特意寫下此部落格,如有不當之處希望大神們多多批評

////

題目分析:

//使皇后們不在同一列,同一行,同一斜行。

//用陣列mark標記 陣列的下標來表示行,陣列的值是列,

//那麼斜行又分為兩種情況,主對角線,cur+mark[cur],副對角線,cur-mark[cur]

//example 1

//通過行來查詢。所以mark[cur]便是列。

#include using

namespace

std;

const

int maxn=10000

;int n,tot = 0,mark[maxn]=;

void search(int

cur)

}if (ok) search (cur + 1

); }

}}int

main()

//example 2

//用二維陣列優化

//該方法用乙個二維陣列vis[0][maxn]標記列,vis[1][maxn]來標記主對角線,vis[2][maxn]來標記副對角線

//vis[0][i]來檢查是否該列有皇后,vis[1][cur+i]檢查主對角線,vis[2][cur-i+n]來標記副對角線

#include

using

namespace

std;

const

int maxn=10000

;int tot=0

;int

n;int

p[maxn];

int vis[3][maxn]=;

void search (int

cur) }}

}int

main()

//第二種之所以比第一種優化,是因為少了一層迴圈。

8皇后問題

會下西洋棋的人都很清楚 皇后可以在橫 豎 斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上 有8 8個方格 使它們誰也不能被吃掉!這就是著名的八皇后問題。對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即a b1b2.b8,其中bi為相應擺法中第i行皇后所處的列數。已經知道8皇后...

8皇后問題

8 皇后問題 描述 八皇后問題是大數學家高斯於1850年提出來的。該問題是在8 8的西洋棋棋盤上放置8個皇后,使得沒有乙個皇后能 吃掉 任何其他乙個皇后,即沒有任何兩個皇后被放置在棋盤的同一行 同一列或同一斜線上。輸出8皇后問題所有結果。輸入 沒有輸入。輸出 每個結果第一行是no n 的形式,n表示...

8皇后問題

8皇后問題 在乙個8 8的棋盤上如何安置8個皇后 不允許任何兩個皇后在同一列,同一行,同一斜線 斜率為正負一 思路 用一維陣列的下標和值表示 皇后的座標 0,0 7,7 例如a 1 0,表示 1,0 暴力8的8次方種情況,用二進位制表示,即00000000 77777777 十進位制表示0 pow ...