hdu2553n皇后 回溯演算法

2022-06-28 07:15:09 字數 784 閱讀 8797

定義:

回溯法(探索與回溯法)是一種選優搜尋法,又稱為試探法,按選優條件向前搜尋,以達到目標。

但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,

而滿足回溯條件的某個狀態的點稱為「回溯點」。

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