classSolution{public:intminPathCost(vector<vector<int>>& grid, vector<vector<int>>& moveCost){int m = grid.size(), n = grid[0].size();
vector<int> dp = grid[0];for(int i =1; i < m; i++){
vector<int>tmp(n);for(int j =0; j < n; j++){int sum = INT_MAX;for(int k =0; k < n; k++){
tmp[j]=min(sum,
dp[k]+// dp为上一行 k 列最小代价
moveCost[grid[i-1][k]][j]+
grid[i][j]);
sum = tmp[j];}}
dp = tmp;}return*min_element(dp.begin(), dp.end());}};