給定乙個數字,我們按照如下規則把它翻譯成字串:0翻譯成「a」,1翻譯成」b「,……,11翻譯成」l」,……,25翻譯成「z」。乙個數字可能有多個翻譯。
例如12258有5種不同的翻譯,分別是「bccfi」,」bwfi」,」bczi」,」mcfi」,」mzi」.
請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。
以12258為例計算可以翻譯的總數。
從第一位開始判斷,有兩種選擇。第一種翻譯1,然後翻譯剩餘的2258。第二種是先翻譯12,然後翻譯剩餘的258.
所以用函式f(i)表示翻譯到第i位時的翻譯總數。
f(i) = f(i+1) + f(i+2) 第i位和i+1位組成的數字大於等於10且小於等於25
f(i) = f(i+1) 第i位和i+1位組成的數字小於10或者大於25
根據這個遞迴方程可以寫出遞迴函式。也可以寫出迴圈函式。
迴圈函式的時間複雜度更低,因為沒有計算重複的子問題。
public static int gettranslationcount(int number)else
}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 請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。這道題,乍一看...
把數字翻譯成字串
示例1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwfi bczi mcfi 和 mzi 2.1 思路分析該題要求按照給定規則將數字翻譯成字串,返回翻譯方案的數量,這裡求的是方案總數,因此想到動態規劃 既然要用動態規劃,那麼需要定義狀態,先將數字num看成 ...