劍指 46 把數字翻譯成字串

2021-08-21 09:23:03 字數 935 閱讀 6561

題目描述

演算法分析

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 

int gettranslationcountcore(const string &number)

}counts[i] = count;

} return counts[0];

}};

測試**:

// ********************測試**********************

void test(const string& testname, int number, int expected)

void test1()

void test2()

void test3()

void test4()

void test5()

void test6()

void test7()

void test8()

void test9()

int main(int argc, char* argv)

46 把數字翻譯成字串

給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。示例 1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwf...

46 把數字翻譯成字串

題目 給定乙個數字,我們按照如下規則把它翻譯為字串 0翻譯成 a 1翻譯成 b 25翻譯成 z 乙個數字可能有多個翻譯。請實現乙個函式,計算乙個數字有多少種不同的翻譯方法。def digit to string num num str num length len num res 0 length ...

劍指 把數字翻譯成字串

1,題目 2,思路 動態規劃 dp i xi 屬於 10,25 dp i 1 10x xi 屬於 1,10 並上 25,99 方法一 字串遍歷 動態規劃 從左向右遍歷 方法二 字串遍歷 動態規劃 從左向右遍歷 此題的動態規劃計算是 對稱的 即 從左向右遍歷 從第 dp 2 計算至 dp n 和 從右...