定義:
回溯法(探索與回溯法)是一種選優搜尋法,又稱為試探法,按選優條件向前搜尋,以達到目標。
但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,
而滿足回溯條件的某個狀態的點稱為「回溯點」。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
intn;
int a[11
]; int
ans;
//i表示第幾行,a[i]表示第幾列
bool judge(int
r)
return1;
}void hang(int
r) }
}int
main()
return0;
}
i代表第幾行,a[i]代表第幾列,遞推。
從第一行開始放,然後遍歷每一列。同時還要檢查一下之前的每行是否會和現在放的這個發生衝突。(不能在同一列,不能在對角線上)
這行的這列可以放,那麼繼續下一行。
注意這個問題用上述**超時了,所以看一下範圍,n小於等於10 ,所以採用打表的方式,算出來所有結果放在乙個陣列裡面。
HDU2553 n皇后 回溯法
題目 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。n個皇后,恰號n行,每行放乙個皇后,queue i j即表示第i 1行的皇后正處再第j 1列上,然後皇后位...
hdu2553 N皇后問題 回溯
第一次寫回溯,給出回溯定義。個人理解 類似於遞迴,但要檢查所有的狀態。權威解釋 題意 中文版不解釋。分析 每個皇后不能在同行,同列,同斜線 左斜,右斜 則可以按行或者列去試探。按行放置不會橫向攻擊,按列放置不會縱向攻擊。其中對角線與行i,列j聯絡起來。用cur表示當前行 列,col cur 表示當前...
HDU 2553 N皇后問題 (初試回溯)
time limit 1000ms memory limit 32768kb 64bit io format i64d i64u description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,...