問題描述:
給定一個數字,我們按照如下規則把它翻譯爲字符串:0翻譯成”a”,1翻譯成”b”,……,11翻譯成”l”,……,25翻譯成”z”。一個數字可能有多個翻譯。例如12258有5種不同的翻譯,它們分別是”bccfi”、”bwfi”、”bczi”、”mcfi”和”mzi”。請編程實現一個函數用來計算一個數字有多少種不同的翻譯方法。
分析:
完整代碼:
//給出禮物矩陣,求矩陣中能獲取的禮物最大值
int getMaxValues_solution(const int* values, int rows, int cols)
{
//判斷輸入的合法性
if( values == nullptr || rows <= 0 || cols <= 0)
return 0;
//聲明一個變量,用來存儲不同位置對應的禮物價值
int* MaxValues = new int[cols];
//遍歷整個矩陣
for(int i = 0; i < rows; i++)
{
for(int j = 0; j < cols; j++)
{
//聲明一個變量,計算當前位置上方的禮物價值
int up = 0;
int left = 0;
//如果在當前位置存在上方值
if(i > 0)
up = MaxValues[j];
//如果存在當前位置存在左邊值
if(j > 0)
left = MaxValues[j-1];
//計算當前位置的禮物最大值
MaxValues[i] = max(up,left) + values[i*cols+j];
}
}
//求最終的禮物最大值
int result = MaxValues[cols - 1];
//刪除MaxValues數組
delete []MaxValues;
//返回最終的結果
return result;
}
int main(){
cout<<GetTranslationCount(12258)<<endl;
return 0;
}