C 回溯演算法 (遞迴的使用)

2021-06-11 02:15:33 字數 751 閱讀 6326

回溯演算法的模型就是一種走迷宮問題的解決方法。

按照某個策略不斷走下去,直到走到終點或者說走完全圖。

首先看問題,,

,,,,

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種可能。這是一道考迴圈和遞迴的面試題。我們在這個程式中將利用遞迴的辦法實現打...