以12256為例從左邊開始翻譯可以分為兩個子問題:翻譯1,2256,翻譯12,256;2256可以分解為翻譯2,256 | 22,56。256可以分解為翻譯2,56。由上分析可以使用遞迴求解但是存在重複部分「56」,所以考慮由下至上解決問題,這樣可以消除子問題假設f ( i ) f(i) f(
i)是第i個數開始存在的翻譯數則f ( i ) = f ( i + 1 ) + g ( i , i + 1 ) f ( i + 2 ) f(i) = f(i+1) + g(i,i+1)f(i+2) f(
i)=f
(i+1
)+g(
i,i+
1)f(
i+2)
其中g ( i , i + 1 ) g(i,i+1) g(
i,i+
1)表示第i與第i+1個數合併後在10~25的範圍內為1否則為0。**如下:
class
solution
private
inttranslatenum
(string numberinstring)
} counts[i]
= count;
} count = counts[0]
;return count;
}}
劍指offer 46 把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。示例 1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwf...
劍指 Offer 46 把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。示例 1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwf...
劍指 Offer 46 把數字翻譯成字串
方法 演算法思想 動態規劃,到i的時候,區分最後兩位 是不是 10,25 最後一位 其他情況 時間複雜度 o n 空間複雜度 o n 邊界條件 兩位的時候,有兩種情況,所以dp 1 補充知識 class solution public int translatenum int num string ...