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