hdu 2553 N皇后問題(回溯法)

2021-07-06 04:42:54 字數 458 閱讀 1098

關鍵在於怎麼判斷主副對角線是否有皇后:

j表示縱座標,i表示橫座標。(注意這不是數學中那個一般的二維座標系)

主對角線易得出j==i,所以有 j1 - i1 == j2 - i2;

副對角線易得出 j1 + i1 ==j2 + i2;

詳見**。

**如下:

#include#include#includeusing namespace std;

const int maxn=11;

int chessboard[maxn];

int n,ans[maxn],sum;

void solve(int cnt)

; while(scanf("%d",&n)!=eof,n)

printf("%d\n",ans[n]);

return 0;

}

HDU 2553 N皇后問題 回溯法

problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。include include include using namesp...

HDU2553 n皇后 回溯法

題目 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。n個皇后,恰號n行,每行放乙個皇后,queue i j即表示第i 1行的皇后正處再第j 1列上,然後皇后位...

hdu2553 N皇后問題 回溯

第一次寫回溯,給出回溯定義。個人理解 類似於遞迴,但要檢查所有的狀態。權威解釋 題意 中文版不解釋。分析 每個皇后不能在同行,同列,同斜線 左斜,右斜 則可以按行或者列去試探。按行放置不會橫向攻擊,按列放置不會縱向攻擊。其中對角線與行i,列j聯絡起來。用cur表示當前行 列,col cur 表示當前...