題目大意:
在n*n的方格棋盤放置了n個皇后,使得它們不相互攻擊(即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。
解題思路:
回溯法。ac**:要先打表,不然tle。
自覺已經精簡到最簡了結果還是tle的痛苦人民得到大佬的提示要先打表,真的想以頭搶地了orz
#include #include #include #define n 15
int chess[n], l[n], lists[n];
int sum;
int check(int m)
for (j=1;j<=n;j++)
l[j] = 1;
chess[i] = j;
if (check(i))
l[j] = 0;
}}int main()
while (scanf("%d",&n) && n)
return 0;
}
N皇后問題(搜尋)
problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如...
DFS搜尋 N皇后問題
八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在88格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林的象棋雜誌上不同的作者發表了4...
搜尋與回溯演算法 N皇后問題
在乙個n n n nn n的西洋棋棋盤上放置n n 12 n n 12 n n 1 2 個皇后,使它們不能互相攻擊 即任意兩個皇后不能在同一行 同一列或同一對角線上 試求出第一種 皇后在第i ii行最靠前的情況下,以後各行也盡量靠前 排列方案,和所有方法。輸入乙個數n n 12 n n 12 n n...