HDU 2553 N皇后問題 回溯法

2021-06-28 23:29:04 字數 377 閱讀 8797

problem description

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

#include #include #include using namespace std;

int n, cnt, vis[3][32], res[12];

void search(int cur)

for(int i = 0; i < n; ++i) }}

int main(int argc, char *argv)

return 0;

}

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

關鍵在於怎麼判斷主副對角線是否有皇后 j表示縱座標,i表示橫座標。注意這不是數學中那個一般的二維座標系 主對角線易得出j i,所以有 j1 i1 j2 i2 副對角線易得出 j1 i1 j2 i2 詳見 如下 include include includeusing namespace std co...

HDU2553 n皇后 回溯法

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

hdu2553 N皇后問題 回溯

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