2304. 网格中的最小路径代价(leetcode)

https://leetcode.cn/problems/minimum-path-cost-in-a-grid

思路很简单,实现很恶心,主要由于我习惯于dp数组从1开始而不是0,这样在推导状态时
由于grid是从0,0开始,而循环是从dp数组的1,1开始,因此在方程中一旦涉及到grid就需要把i,j都减1,sometimes眼花就忘减导致一直溢出

class Solution {
public:
    int minPathCost(vector<vector<int>>& grid, vector<vector<int>>& moveCost) {
        // f[i][j]表示走到i,j的代价
        // 初始化:f[1][1~m] = grid[1][1~m];
        // f[i][j] = min( f[i-1][1~m]+moveCost[ grid[i-1][1~m] ][ j ]+grid[i][j] );
        // 答案是:
        // min( f[n][1~m] )
        const int N = 55;
        int n = grid.size(),m=grid[0].size();
        int ncost = moveCost.size(),mcost=moveCost[0].size();
        int f[N][N];
        memset(f,0,sizeof f);
        for(int i=1;i<=m;i++)f[1][i]=grid[0][i-1];
        for(int i=2;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                int temp=0x3f3f3f3f;
                for(int k=1;k<=m;k++)
                    temp=min(f[i-1][k]+ moveCost[ grid[i-2][k-1] ][j-1] + grid[i-1][j-1],temp);
                f[i][j]=temp;
            }
        int res=0x3f3f3f3f;
        for(int i=1;i<=m;i++)res=min(res,f[n][i]);
        return res;
    }
};

 

posted @   风乐  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示