现在你面对一个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;
}