劍指Offer(牛客版)--面試題46:把數字翻譯成字符串

問題描述:

 

給定一個數字,我們按照如下規則把它翻譯爲字符串: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;
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章