DFS 細節 306 累加數

2021-10-07 05:48:35 字數 1177 閱讀 8514

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

乙個有效的累加序列必須至少包含 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

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

解題

首先確定前兩個數——列舉前兩個數的每一種情況;

注意點

第二個數不能為0開頭,長度大於1的數!

dfs函式

遍歷剩餘字串,得到與前兩個數之和相同的數,進行下一次dfs;

直到start==num.size(),停止迴圈,返回true;

否則遍歷每一種情況,都不行則返回false;

class

solution

private

:bool

dfs(string first, string second,

int start,string num)

string add

(string a,string b)

while

(isize()

)while

(isize()

)if(flag) res+

=flag+

'0';

reverse

(res.

begin()

,res.

end())

;return res;}}

;

LeetCode 306 累加數(暴力回溯)

累加數是乙個字串,組成它的數字可以形成累加序列。乙個有效的累加序列必須至少包含 3 個數。除了最開始的兩個數以外,字串中的其他數都等於它之前兩個數相加的和。給定乙個只包含數字 0 9 的字串,編寫乙個演算法來判斷給定輸入是否是累加數。說明 累加序列裡的數不會以 0 開頭,所以不會出現 1,2,03 ...

leetcode306 累加數(回溯)

累加數是乙個字串,組成它的數字可以形成累加序列。乙個有效的累加序列必須至少包含 3 個數。除了最開始的兩個數以外,字串中的其他數都等於它之前兩個數相加的和。給定乙個只包含數字 0 9 的字串,編寫乙個演算法來判斷給定輸入是否是累加數。說明 累加序列裡的數不會以 0 開頭,所以不會出現 1,2,03 ...

nyoj306 dfs 二分搜尋

題目大意 中文題。演算法思路 這種思路確實對我來說很新穎,我也是看了解題報告才知道。說白了,二分最小值和最大值的差,如果這個差值能夠從起點走到終點,則說明這個差值是可行的,那我們就在減小,二分左半部分,否則二分右半部分。include include includeusing namespace s...