面試題46 把數字翻譯成字串

2022-03-03 20:05:24 字數 945 閱讀 5466

給定乙個數字,我們按照如下規則把它翻譯為字串:0翻譯成「a」,1翻譯成「b」,……,25翻譯成「z」。乙個數字可能有多種翻譯。例如,12258有5種不同的翻譯,分別是「bccfi」、「bwfi」、「bczi」、「mcfi」、「mzi」。求乙個數字有多少種不同的翻譯方法?

解題思路

上**(c++香)

法一:回溯法,很easy

int countn = 0;

// 回溯法

void dfs(int num, int n, int index)

// 如果當前值是1,並且後面至少還有1位數

if((num[index] == 1) && (index < n - 1))

dfs(num, n, index + 2);

// 如果當前值是2,並且後面至少還有1位數,並且下一位小於6

else if((num[index] == 2) && (index < n - 1) && (num[index + 1] < 6))

dfs(num, n, index + 2);

// 也可以只走一步

dfs(num, n, index + 1);

}

法二:動態規劃

找到狀態轉移方程:\(f(i)=f(i+1)+g*f(i+2)\),其中當第i位數字和第i+1兩位數字拼接起來的數字在10~25之間時,g為1,否則為0。

int gettranslationcount(const string& number)

}counts[i] = count;

}count = counts[0];

delete counts;

return count;

}int gettranslationcount(int number)

面試題46 把數字翻譯成字串

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

Java 面試題46 把數字翻譯成字串

給定乙個數字,按照如下規則翻譯成字串 0翻譯成 a 1翻譯成 b 25翻譯成 z 乙個數字有多種翻譯可能,例如12258一共有5種,分別是bccfi,bwfi,bczi,mcfi,mzi。實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。分析思路 用遞迴自頂向下分析,用動態規劃自低向上求解 定義...

面試題46 把陣列翻譯成字串

題目描述 給定乙個數字,我們按照如下規則把它翻譯成字串 0翻譯成 a 1翻譯成 b 25翻譯成 z 乙個數字可能有多個翻譯,例如,12258有5種不同的翻譯,分別是 bccfi bwfi bczi mcfi mzi 請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。動態規劃 舉例來分析...