LeetCode解題方法6 回溯 遞迴

2021-10-02 15:00:46 字數 1262 閱讀 5526

394-字串解碼

該方法利用遞迴的方式,遍歷所有路線。當一種路線不滿足要求,便返回。

1. 題目

給定乙個經過編碼的字串,返回它解碼後的字串。

編碼規則為: k[encoded_string],表示其中方括號內部的 encoded_string 正好重複 k 次。注意 k 保證為正整數。

你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。

此外,你可以認為原始資料不包含數字,所有的數字只表示重複的次數 k ,例如不會出現像 3a 或 2[4] 的輸入。

示例:s = 「3[a]2[bc]」, 返回 「aaabcbc」.

s = 「3[a2[c]]」, 返回 「accaccacc」.

s = 「2[abc]3[cd]ef」, 返回 「abcabccdcdcdef」.

首先觀察,可以利用回溯方法,但要注意兩個退出條件和兩種寫入。

寫入方式1:如果沒有數字,只有字母,正常寫入;

方式2:如果有數字n,則數字後面的【】中會重複n次

退出條件1:如果是在主函式中呼叫該函式,則退出條件應該是字串到達末尾

條件2:如果是在數字後,重複n次用該函式,則退出條件應該是到達『【』對應的『】』

3. **

void

backtrace

(char

*out,

int* deep,

char

* s,

int pos,

int* posout)

while

(s[pos]

!='\0'

)while

((s[pos]

<=

'z'&& s[pos]

>=

'a')

||(s[pos]

<=

'z'&& s[pos]

>=

'a'))if

(s[pos]

<=

'9'&& s[pos]

>=

'0')

for(i =

0; i < num; i++

) pos =

*posout;}}

*posout = pos;

}char

*decodestring

(char

* s)

39 回溯演算法

var res 全域性遍歷,下標表示行,值表示queen所在列 cal8queens 0 遞迴函式,求每行的queen function cal8queens row for let col 0 col 8 col 判斷棋子放在 row,col 位置,是否正確 function isok row,c...

演算法8 回溯

理論基礎 回溯法是一種組織搜尋的一般技術,有 通用的解題法 之稱,用它可以系統的搜尋乙個問題的所有解或任一解。有許多問題,當需要找出它的解集或者要求回答什麼解是滿足某些約束條件的最佳解時,往往要使用回溯法。可以系統地搜尋乙個問題的所有解或任意解,既有系統性又有跳躍性。回溯法的基本做法是搜尋,或是一種...

實驗五 回溯法

實驗 五 回溯法 一 實驗目的與要求 1 通過回溯法的示例程式理解回溯法的基本思想 2 運用回溯法解決實際問題進一步加深對回溯法的理解和運用 二 實驗內容 1 分析並掌握 符號三角 問題的回溯法求解方法 2 分析並掌握 n皇后 問題的回溯演算法求解方法 3 練習使用回溯法求解 整數變換 等問題。三 ...