37. Matrix 動態規劃

現在你面對一個n×m的矩陣,矩陣中的每一個元素都是一個整數,現在你需要計算從矩陣的左上角走到右下角所走過的所有元素相加的最大和。
注意:只能向右或者向下走,不能走出邊界

#include <iostream>
#include <algorithm>
 //動態規劃,每次走最小值即可
using namespace std;
 
int value[1024][1024];
 
int main()
{
	int m, n,ele;
	cin>>m>>n;
 
	//輸入矩陣
	for (int i = 0; i < m; ++i)
	{
		for (int j = 0; j < n; ++j)
		{
            cin>>ele;
            value[i][j]=ele;
	
		}
	}
 
	//計算
	for (int i = 1; i < m; ++i)
	{
		value[i][0] += value[i - 1][0];
	}
	for (int j = 1; j < n; ++j)
	{
		value[0][j] += value[0][j - 1];
	}
	for (int i = 1; i < m; ++i)
	{
		for (int j = 1; j < n; ++j)
		{
			value[i][j] += max(value[i - 1][j], value[i][j - 1]);
		}
	}
 

 
	cout << value[m - 1][n - 1] << endl;
 
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章