回溯法解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角的斜線上。你的任務是,...