HDU2553 N皇后問題 回溯 打表

2021-07-09 06:40:06 字數 482 閱讀 2079

回溯法解n皇后問題相對較容易。

對於棋盤,用一維陣列儲存即可。i代表第i行,可以保證一定不會在同一行了,a[i]表示列數。其中不會相互攻擊的條件是:不能在同一列,即a[i]!=a[j];不能在一條斜線上,即行數相減的絕對值不能等於列數相減的絕對值。

打表**:

#include#includeusing namespace std;

int a[11];

int ans,n;

bool place(int r)

}}int main()

}return 0;

}

ac**:

#includeint main()

; while(~scanf("%d",&n)&&n)

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

return 0;

}

hdu2553 N皇后問題 回溯

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

hdu2553 N皇后問題 dfs回溯剪枝 打表

problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如...

HDU 2553 N皇后問題 (初試回溯)

time limit 1000ms memory limit 32768kb 64bit io format i64d i64u description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,...