//為了鞏固總結自己所學的知識,特意寫下此部落格,如有不當之處希望大神們多多批評
////
題目分析:
//使皇后們不在同一列,同一行,同一斜行。
//用陣列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 ...