搜尋是萬能演算法:如何找所有解?列舉。列舉的方法?遞迴。遞迴的組合?搜尋。
廣搜
while not queue.empty ()
begin
可加結束條件
tmp = queue.top ()
從tmp迴圈拓展下乙個狀態next
if 狀態next合法 then
begin
生成新狀態next
next.step = tmp.step + 1
queue.pushback (next)
endqueue.pop ()
end
深搜
遞迴實現:
function dfs (int step, 當前狀態)
begin
可加結束條件
從當前狀態迴圈拓展下乙個狀態next
if 狀態next合法 then
dfs (step + 1, next ))
end非遞迴實現:
while not stack.empty ()
begin
tmp = stack.top()
從tmp拓展下乙個未拓展的狀態next
if 沒有未拓展狀態(到達葉節點) then
stack.pop()
else if 狀態next合法 then
stack.push(next)
end
#include#include#includeusing namespace std;
int a[100][100],t=0; //路徑總數和路徑
int x[4]=, //四種移動規則
y[4]=;
int search(int); //搜尋
int print(int); //列印
int main() //主程式
;
int search(int i) }
int print(int ii)
}
acm週末學習總結
如果不進行大量的練習,只是被動的聽課,那樣一點效果都沒有。acm很看投入,投入少想見成果,很難。更何況我們的演算法課才12周。這兩天看了看搜尋的一些題目,我算是剛剛接觸搜尋,我覺得難度挺大,看透了一些題目之後就好很多了,那一陣學搜尋的時候沒理解。本週還是主要對單調佇列和二分進行學習,二分還好,固定模...
acm週末學習總結
這週做了洛谷上面的題目,還是發現很多自己的不足,最大的問題是思路不清晰。細節不到位。最近幾周把精力集中在acm上,要為進入校隊而努力了!然後今天和乙個舍友組了個隊打了一場比賽,最後就是有5道題有思路卻只ac了3道,並查集的題目我們都不會,用別的方法沒做出來,暴力不是總會出奇蹟。細節,還是得注意細節。...
週末學習總結
關於下午的網路賽,我們的水平是3題,但是只出了2題。最後5分鐘打表找了e的規律,我們還天真的以為找到了規律。殊不知我們找的規律已經超過了題目所給的範圍。一開始隊友手快用stl的deque寫完交,超時,我玄學優化交後發現記憶體超限。關於stl,要學習的還有很多很多,我們覺得用起來很方便,全都封裝好了,...