題目描述
給定乙個數字,按照如下規則翻譯成字串:0翻譯成"a",1翻譯成"b"…25翻譯成"z"。乙個數字有多種翻譯可能,例如12258一共有5種,分別是bccfi,bwfi,bczi,mcfi,mzi。
實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。
思路動態規劃,從最小的問題開始 :f( r )表示以r為開始(r最小取0)到最右端所組成的數字能夠翻譯成字串的種數。對於長度為n的數字,f(n)=0,f(n-1)=1,求f(0)。
遞推公式為 f(r-2) = f(r-1)+g(r-2,r-1)*f( r );
其中,如果r-2,r-1能夠翻譯成字元,則g(r-2,r-1)=1,否則為0。
因此,對於12258:
f(5) = 0
f(4) = 1
f(3) = f(4)+0 = 1
f(2) = f(3)+f(4) = 2
f(1) = f(2)+f(3) = 3
f(0) = f(1)+f(2) = 5
class
solution
private
:int
getcount
(const string& str)
return counts[0]
;}inthelp
(const string& str,
int i,
int j)
};
劍指 Offer把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。示例 1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwf...
劍指 把數字翻譯成字串
1,題目 2,思路 動態規劃 dp i xi 屬於 10,25 dp i 1 10x xi 屬於 1,10 並上 25,99 方法一 字串遍歷 動態規劃 從左向右遍歷 方法二 字串遍歷 動態規劃 從左向右遍歷 此題的動態規劃計算是 對稱的 即 從左向右遍歷 從第 dp 2 計算至 dp n 和 從右...
劍指offer 046把數字翻譯成字串
題目 給定乙個數字,我們按照如下規則把它翻譯為字串 0翻譯成 a 1翻譯成 b 11翻譯成 l 大寫l 25翻譯為 z 乙個數字可能有多少個翻譯。例如,12258有5種不同的翻譯,分別是 bccfi bwfi bczi mcfi mzi 這道題目的解法是動態規劃 class solution def...