leadcode的Hot100系列--64. 最小路径和--权值最小的动态规划
如果这个:
leadcode的Hot100系列--62. 不同路径--简单的动态规划
看懂的话,那这题基本上是一样的,
不同点在于:
1、这里每条路径相当于多了一个权值
2、结论不再固定,而是要比较不同走法哪个权值更小
针对第一点,需要把第一行和第一列的权值做一个累加:
假设这里的权值都是1,则
| A | B | C | D |
|---|---|---|---|
| E | F | G | H |
| I | J | K | L |
中,f(A) 为1,f(B) 就为2,,因为A和B各有一个权值,f(C)为3,f(E) 为2,f(I)为3:
| 1 | 2 | 3 | 4 |
|---|---|---|---|
| 2 | f(F) | f(G) | f(H) |
| 3 | f(J) | f(K) | f( L) |
要想 f(F) 小,则要比较f(B)和f(E)哪个小,所以 f(F) = min( f(F), f(E) ) + 1。
所以很容易得到动态方程:
f [i] [j] = min( f [i] [j-1] + f [i-1] [j] ) + 1 // i 代表行,j 代表列,最后加的1,是假设当前的点的权值是1
所以,每个点记录的从开始到当前点的最小值。
int min(int a, int b)
{
return a<b?a:b;
}
int minPathSum(int** grid, int gridSize, int* gridColSize){
int p[gridSize][*gridColSize];
int sum = 0, i,j;
for (i=0; i<gridSize; i++) // 先算出第一列的权值
{
sum += grid[i][0];
p[i][0] = sum;
}
sum = 0;
for (i=0; i<*gridColSize; i++) // 先算出第一行的权值
{
sum += grid[0][i];
p[0][i] = sum;
}
for (i=1; i<gridSize; i++)
{
for (j=1; j<*gridColSize; j++)
{
p[i][j] = min(p[i][j-1], p[i-1][j]) + grid[i][j]; // 动态方程
}
}
return p[gridSize-1][*gridColSize-1];
}
leadcode的Hot100系列--64. 最小路径和--权值最小的动态规划的更多相关文章
- leadcode的Hot100系列--62. 不同路径--简单的动态规划
题目比较清晰,简单来说就是: A B C D E F G H I J K L 只能往右或者往下,从A到L,能有几种走法. 这里使用动态规划的方法来做一下. 动态规划最重要的就是动态方程,这里简单说下这 ...
- leadcode的Hot100系列--17. 电话号码的字母组合--回溯的另一种想法的应用
提交leetcode的时候遇到了问题,一直说访问越界,但仔仔细细检查n多遍,就是检查不出来. 因为我用到了count全局变量,自加一来表明当前数组访问的位置, 后来突然想到,是不是在leetcode在 ...
- UVA 548.Tree-fgets()函数读入字符串+二叉树(中序+后序遍历还原二叉树)+DFS or BFS(二叉树路径最小值并且相同路径值叶子节点权值最小)
Tree UVA - 548 题意就是多次读入两个序列,第一个是中序遍历的,第二个是后序遍历的.还原二叉树,然后从根节点走到叶子节点,找路径权值和最小的,如果有相同权值的就找叶子节点权值最小的. 最后 ...
- 洛谷 P4149 [IOI2011]Race-树分治(点分治,不容斥版)+读入挂-树上求一条路径,权值和等于 K,且边的数量最小
P4149 [IOI2011]Race 题目描述 给一棵树,每条边有权.求一条简单路径,权值和等于 KK,且边的数量最小. 输入格式 第一行包含两个整数 n, Kn,K. 接下来 n - 1n−1 行 ...
- hdu Caocao's Bridges(无向图边双连通分量,找出权值最小的桥)
/* 题意:给出一个无向图,去掉一条权值最小边,使这个无向图不再连同! tm太坑了... 1,如果这个无向图开始就是一个非连通图,直接输出0 2,重边(两个节点存在多条边, 权值不一样) 3,如果找到 ...
- LUOGU P2764 最小路径覆盖问题 (最小路径点覆盖)
解题思路 有向图最小路径点覆盖问题,有这样的结论就是有向图最小路径点覆盖等于n-拆点二分图中最大匹配.具体怎么证明不太知道..输出方案时找到所有左部未匹配的点一直走$match$就行了. #incl ...
- HDU 1533 KM算法(权值最小的最佳匹配)
Going Home Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- leadcode的Hot100系列--155. 最小栈
栈:先入后出,后入先出 像电梯一样,先进入电梯的,走到电梯最深处,后进入电梯的,站在电梯门口, 所以电梯打开的时候,后进入的会先走出来,先进入的会后走出来. push,对应入电梯,把数据往里面压 po ...
- leadcode的Hot100系列--78. 子集--回溯
上一篇说了使用位运算来进行子集输出,这里使用回溯的方法来进行排序. 回溯的思想,我的理解就是: 把解的所有情况转换为树或者图,然后用深度优先的原则来对所有的情况进行遍历解析. 当然,因为问题中会包涵这 ...
随机推荐
- Asp.net MVC Razor输出字符串方法(js中嵌入razor)
@{ Model p = new Model(); //输出名称和年龄 //1.第一种方式 @:姓名=@p.Name //2.第二中方式 <text>年龄=</text>p.A ...
- WCF 大文件传输配置
<bindings> <webHttpBinding> <!--这个是接收大数据加的,设置WCF服务器端数据接收上限参数,此处单位字节,故2147483647字节==2G ...
- ASP.NET Core SameSite 设置引起 Cookie 在 QQ 浏览器中不起作用
最近在发布了基于 ASP.NET Core 实现的新版登录页面之后,陆陆续续地接到用户反馈登录时 Antiforgery Token 总是验证失败. 日志中记录的对应错误是 Antiforgery t ...
- Boost总结汇总
从开始接触Boost已经有好几年了,而对它的掌握却难言熟悉,有对它部分的源代码的剖析也是蜻蜓点水.有时间一点点梳理一下吧. 1. 概述 [Boost]C++ Boost库简介[Boost]C++ Bo ...
- Hermite曲线插值
原文 Hermite Curve Interpolation Hermite Curve Interpolation Hamburg (Germany), the 30th March 1998. W ...
- String内存结构
var s: AnsiString; begin s := '1234567890'; showmessage(s); end; 变量s的内存结构为A8 03 01 00 FF FF FF FF 0A ...
- Win10《芒果TV》内测版现已支持在国行版 Xbox One 下载体验
Win10<芒果TV>内测版现已支持在国行版 Xbox One 下载体验 关于国行为什么无法从商店下载安装芒果TV内测版(来自微软) 1.截至到目前<芒果TV - Preview&g ...
- c# Lambda扩展
扩展类 public static class LinqExtensions { /// <summary> /// 创建lambda表达式:p=>true /// </sum ...
- c# 停靠窗体
public partial class FrmAnchor : Form, IMessageFilter { public FrmAnchor(Control parentControlc, Con ...
- qt---cdb(Microsoft Console Debugger)调试
支持的调试器 windows系统下主要的调试器: CDB ,只能调试用户程序,只有控制台界面,以命令行形式工作 NTSD, 只能调试用户程序,只有控制台界面,以命令行形式工作 KD,主要用于内核调试, ...