回溯演算法的模型就是一種走迷宮問題的解決方法。
按照某個策略不斷走下去,直到走到終點或者說走完全圖。
首先看問題,,
,,,,
1代表走廊,0代表牆,s代表起點,e代表終點,規則只可以橫豎行走,要求從s->e;
解決這個問題需要的三個類:
2.backtrack (回溯類,對其中的方法進行遞迴)
3.position(表示位置資訊,根據不同應用擁有不同對position的定義,這裡相當於乙個二維陣列)
4個通用方法:
1個內部類iterator:
它還有乙個空指標,表示點,針對不同應用會在定義不同的結構體,然後強轉為那種結構體
void *fieldptr
position類:
就是乙個位置,該應用中屬性有:行、列。
方法也就是設定行列,得到行列。
backtrack類:
裡面有個很重要的方法
trytosolve(position pos)會進行遞迴的呼叫來嘗試解決問題.
這些基本就是主要用來解決問題的類了。
回溯法解決問題的主要思路:
1.初始化迷宮,起點終點。
2.決定行走策略
3.依照策略一步一步進行嘗試,直到終點,或者所有可行點都試完。
行走策略定義在iterator的++運算子過載中
住方法中呼叫trytosolve方法,裡面進行遞迴的呼叫。(在呼叫的過程中會用到上述的方法來進行標記某個點可行/不可行,是否已經嘗試等等。)
使用with遞迴回溯
向上回溯,查詢頂級部門 declare pdeptid uniqueidentifier with dept deptid,pdeptid as select udepid,uparentid from oa.dbo.depinfo where udepid in select p.udepid f...
遞迴演算法 迷宮回溯問題
package com.czn.recursion public class migong for int i 0 i 8 i map 3 1 1 map 3 2 1 for int i 0 i 8 i system.out.println boolean setway setway map,1,1...
打靶 遞迴演算法 八皇后 回溯演算法
面試例題1 乙個射擊運動員打靶,靶一共有10環,連開10槍打中90環的可能性有多少種?請用遞迴演算法程式設計實現。中國某著名通訊企業h面試題 解析 靶上一共有10種可能 1環到10環,還有可能脫靶,那就是0環,加在一起共11種可能。這是一道考迴圈和遞迴的面試題。我們在這個程式中將利用遞迴的辦法實現打...