剑指 Offer II 099. 最小路径之和-双百代码
代码 路径 最小 II Offer 双百
2023-09-14 09:06:53 时间
剑指 Offer II 099. 最小路径之和
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:一个机器人每次只能向下或者向右移动一步。
示例 1:
输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。
示例 2:
输入:grid = [[1,2,3],[4,5,6]]
输出:12
这题解题的重点在于知道,每个点由上面一个点或左面一个点得到
解题代码如下:
int minPathSum(int** grid, int gridSize, int* gridColSize){
int i,j;
int n=gridSize,m=gridColSize[0];
// printf("nm %d %d || ",n,m);
int k=fmin(m,n);
for(i=0;i<k;i++){
for(j=i;j<m;j++){
// printf("%d %d ",i,j);
if(j==0&&i==0){
continue;
}
if(i==0){
grid[i][j]=grid[i][j-1]+ grid[i][j];
}
else{
if(grid[i][j-1]<grid[i-1][j]){
grid[i][j]=grid[i][j]+grid[i][j-1];
}
else{
grid[i][j]=grid[i][j]+grid[i-1][j];
}
}
// printf("%d %d %d ",i,j,grid[i][j]);
}
for(j=i+1;j<n;j++){
if(i==0){
grid[j][i]=grid[j-1][i]+ grid[j][i];
}
else{
if(grid[j][i-1]<grid[j-1][i]){
grid[j][i]=grid[j][i]+grid[j][i-1];
}
else{
grid[j][i]=grid[j][i]+grid[j-1][i];
}
}
// printf("-%d %d %d " ,j,i,grid[j][i]);
}
}
return grid[n-1][m-1];
}
相关文章
- pycharm提示代码功能问题「建议收藏」
- python贪吃蛇最简单代码_用python写贪吃蛇
- 神经网络 | 感知器原理及python代码实现and和or函数
- js 代码常规的一些骚操作
- 把代码贴进去自动找bug,这个debug神器自动修复仅需几秒,还有GPT-3在线解惑
- 【Linux 内核 内存管理】物理分配页 ⑨ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | retry 标号代码分析 )
- 【算法】动态规划 ⑤ ( LeetCode 63.不同路径 II | 问题分析 | 动态规划算法设计 | 代码示例 )
- Linux C编程:专业的编译技术(linuxc编译代码)
- Go-项目结构和代码组织详解编程语言
- 从实际代码开始编写好的示例
- HTML 计算机代码
- Oracle 代码路径挖掘解决方案之路(oracle代码路径)
- 基于AJAX的分页类实现代码
- jqueryselect操作的日期联动实现代码
- 用PHP为SHOPEX增加日志功能代码
- Javascript调用C#代码
- java实现MD5加密算法的实例代码
- js文件Cookie存取值示例代码