#include<vector>
#include<algorithm>
class Solution
{
public:
Solution() {}
~Solution() {}
int minPathSum(std::vector<std::vector<int>>& grid)
{
if (grid.size() == 0)
{
return 0;
}
int row = grid.size();
int column = grid[0].size();
std::vector<std::vector<int>> dp(row, std::vector<int>(column, 0));
dp[0][0] = grid[0][0];
for (int i = 1; i < column; i++)
{
dp[0][i] = dp[0][i - 1] + grid[0][i];
}
for (int i = 1; i < row; i++)
{
dp[i][0] = dp[i - 1][0] + grid[i][0];
for (int j = 1; j < column; j++)
{
dp[i][j] = std::min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
}
}
return dp[row - 1][column - 1];
}
};
int main()
{
int test[4][4] = { {1,3,5,9},{8,1,3,4},{5,0,6,1},{8,8,4,0} };
std::vector<std::vector<int>> grid;
for (int i = 0; i < 4; i++)
{
grid.push_back(std::vector<int>());
for (int j = 0; j < 4; j++)
{
grid[i].push_back(test[i][j]);
}
}
Solution solve;
printf("%d\n", solve.minPathSum(grid));
return 0;
}
【算法】求解矩阵最小路径和问题
最新推荐文章于 2023-03-21 10:09:30 发布