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;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效