劍指offer 把數字翻譯成字串(c

2021-09-24 09:31:28 字數 735 閱讀 1198

題目描述

給定乙個數字,按照如下規則翻譯成字串: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...