累加數是乙個字串,組成它的數字可以形成累加序列。
乙個有效的累加序列必須至少包含 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...