給定乙個數字,我們按照如下的規則將它翻譯成字串:0翻譯成 「a」 ,1翻譯成 「b」, … ,11翻譯成 「l」,25翻譯成 「z」。乙個數字可能有多種翻譯,例如,12258有5種翻譯,分別是 「bccfi」、「bwfi」、「bczi」、「mcfi」 和 「mzi」。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。這道題,乍一看感覺我靠好難,這都什麼玩意。這東西怎麼翻譯。其實仔細一想,這玩意不就是青蛙跳台階的翻版嗎?
怎麼說?就以12258舉例,從左向右看,按照題目的意思,第一步開始翻譯的時候,我們可以將這個數字分為 1_2258、12_258,這兩種情況,翻譯過來就是 b_2258、m_258兩種情況,然後再接下來對這兩種不同的情況再分別討論 2258 該怎麼翻譯,以及 258 該怎麼翻譯。
所以現在就清楚了把,這道題是怎麼和青蛙跳台階聯絡起來的。青蛙跳台階的時候可以選擇一次跳乙個台階,也可以選擇一次跳兩個台階;而這道題我們可以選擇是一次選擇乙個數字來翻譯,還是一次選擇兩個數字來翻譯。
當然了,這裡會多乙個約束,就是兩個數字拼接起來的和要>= 10 && <= 25,因為只有26個英文本母。
思路理清了,還是盡量不要直接寫**,先寫好偽**,再理清楚編碼時可能會碰到的一些細節問題,最後再開始寫,那就是非常順理成章的寫**了。
另外再點一下,就是,這道題就是典型的用遞迴分析問題,用迴圈解決問題的動態規劃問題。
public
class
num2string
public
intn2s
(string s)}}
return count[0]
;}
把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯為字串 0翻譯成 a 1翻譯成 b 11翻譯成 l 25翻譯成 z 乙個數字可能有多個翻譯。例如12258有5種不同的翻譯,它們分別 bccfi bwfi bczi mcfi 和 mzi 請程式設計實現乙個函式用來計算乙個數字有多少種不同的翻譯方法 1.dfs ...
把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯成字串 0翻譯成 a 1翻譯成 b 11翻譯成 l 25翻譯成 z 乙個數字可能有多個翻譯。例如12258有5種不同的翻譯,分別是 bccfi bwfi bczi mcfi mzi 請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。以12258為例...
把數字翻譯成字串
示例1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwfi bczi mcfi 和 mzi 2.1 思路分析該題要求按照給定規則將數字翻譯成字串,返回翻譯方案的數量,這裡求的是方案總數,因此想到動態規劃 既然要用動態規劃,那麼需要定義狀態,先將數字num看成 ...