给定一个 m×n的二维网格 grid,每个格子中有一个非负整数。请找出一条从左上角 (0, 0) 到右下角 (m-1, n-
- 的路径,使得路径上的数字总和最小。每次只能向右或向下移动。横线处应该填入的是()
#include <iostream> #include <vector> #include <algorithm> using namespace std; int minPathSum(vector<vector<int>>& grid) { int m = grid.size(); int n = grid[0].size(); vector<vector<int>> dp(m, vector<int>(n, 0)); dp[0][0] = grid[0][0]; for (int j = 1; j < n; j++) { dp[0][j] = dp[0][j - 1] + grid[0][j]; } for (int i = 1; i < m; i++) { dp[i][0] = dp[i - 1][0] + grid[i][0]; } for (int i = 1; i < m; i++) { for (int j = 1; j < n; j++) { ———————————————————————————————— } } return dp[m - 1][n - 1]; } int main() { int m, n; cin >> m >> n; vector<vector<int>> grid(m, vector<int>(n)); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin >> grid[i][j]; } } int result = minPathSum(grid); cout << result << endl; return 0; }