刷題之回溯法 累加數問題

2021-10-05 04:29:17 字數 1309 閱讀 5646

累加數是乙個字串,組成它的數字可以形成累加序列。

乙個有效的累加序列必須至少包含 3 個數。除了最開始的兩個數以外,字串中的其他數都等於它之前兩個數相加的和。

給定乙個只包含數字 『0』-『9』 的字串,編寫乙個演算法來判斷給定輸入是否是累加數。

說明: 累加序列裡的數不會以 0 開頭,所以不會出現 1, 2, 03 或者 1, 02, 3 的情況。

示例 1:

輸入: 「112358」

輸出: true

解釋: 累加序列為: 1, 1, 2, 3, 5, 8 。1 + 1 = 2, 1 + 2 = 3, 2 + 3 = 5, 3 + 5 = 8

示例 2:

輸入: 「199100199」

輸出: true

解釋: 累加序列為: 1, 99, 100, 199。1 + 99 = 100, 99 + 100 = 199

高階:你如何處理乙個溢位的過大的整數輸入?

class

solution

reverse

(ans.

begin()

,ans.

end())

;//字串反轉操作

return ans;

}//核心操作,回溯發,left為剩餘的字串,level為參與計算的數字個數,ans用於記錄已經參與計算的字串

bool

backtrack

(string& left,

int level, vector

& ans)

else

}//從0開始遍歷

for(

int i =

0;isize()

;i++)if

(backtrack

(substr,level+

1,ans)

) ans.

pop_back()

;//回溯,返回說明加入vector的數字不合適返回上一層}if

(left[0]

=='0')}

return

false;}

bool

isadditivenumber

(string num)

};

string add

(string&a,string& b)

reverse

(ans.

begin()

,ans,

end())

;return ans;

}

leetcode刷題總結之回溯法

前言 最近太懶了,好久都沒寫總結了。回溯法是看labuladong的詳解回溯法入的門,然後看了 計算機演算法設計與分析 第5章的回溯法部分弄清了原理,在leetcode上做了差不多20個題,今日總結一下,供以後複習用。回溯法的定義 回溯法有通用解法的美稱,對於很多問題,如迷宮等都有很好的效果。回溯法...

Leetcode刷題感想 回溯法

回溯法 回溯法往往用來找出乙個問題的所有可能解 而不是簡單的回答出有多少個解,如果是問解的個數,可能有更好的辦法,也就是動態規劃 回溯法是dfs的一種,但又和dfs不一樣,dfs往往求解連通面積,可達性的問題,而回溯法往往求解滿足某一條件的所有組合,比如二叉樹的路徑和,排列組合等經典問題。回溯法在 ...

2021 2 24 刷題(回溯 組合問題)

題目描述 給定兩個整數 n 和 k,返回 1 n 中所有可能的 k 個數的組合。示例 輸入 n 4,k 2 輸出 2,4 3,4 2,3 1,2 1,3 1,4 回溯實質是回溯三部曲 回溯函式的引數及返回值 回溯函式的終止條件 回溯搜尋的遍歷過程 回溯函式的模板 void backtracking ...