如果这个:

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. 最小路径和--权值最小的动态规划的更多相关文章

  1. leadcode的Hot100系列--62. 不同路径--简单的动态规划

    题目比较清晰,简单来说就是: A B C D E F G H I J K L 只能往右或者往下,从A到L,能有几种走法. 这里使用动态规划的方法来做一下. 动态规划最重要的就是动态方程,这里简单说下这 ...

  2. leadcode的Hot100系列--17. 电话号码的字母组合--回溯的另一种想法的应用

    提交leetcode的时候遇到了问题,一直说访问越界,但仔仔细细检查n多遍,就是检查不出来. 因为我用到了count全局变量,自加一来表明当前数组访问的位置, 后来突然想到,是不是在leetcode在 ...

  3. UVA 548.Tree-fgets()函数读入字符串+二叉树(中序+后序遍历还原二叉树)+DFS or BFS(二叉树路径最小值并且相同路径值叶子节点权值最小)

    Tree UVA - 548 题意就是多次读入两个序列,第一个是中序遍历的,第二个是后序遍历的.还原二叉树,然后从根节点走到叶子节点,找路径权值和最小的,如果有相同权值的就找叶子节点权值最小的. 最后 ...

  4. 洛谷 P4149 [IOI2011]Race-树分治(点分治,不容斥版)+读入挂-树上求一条路径,权值和等于 K,且边的数量最小

    P4149 [IOI2011]Race 题目描述 给一棵树,每条边有权.求一条简单路径,权值和等于 KK,且边的数量最小. 输入格式 第一行包含两个整数 n, Kn,K. 接下来 n - 1n−1 行 ...

  5. hdu Caocao's Bridges(无向图边双连通分量,找出权值最小的桥)

    /* 题意:给出一个无向图,去掉一条权值最小边,使这个无向图不再连同! tm太坑了... 1,如果这个无向图开始就是一个非连通图,直接输出0 2,重边(两个节点存在多条边, 权值不一样) 3,如果找到 ...

  6. LUOGU P2764 最小路径覆盖问题 (最小路径点覆盖)

    解题思路 有向图最小路径点覆盖问题,有这样的结论就是有向图最小路径点覆盖等于n-拆点二分图中最大匹配.具体怎么证明不太知道..输出方案时找到所有左部未匹配的点一直走$match​$就行了. #incl ...

  7. HDU 1533 KM算法(权值最小的最佳匹配)

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  8. leadcode的Hot100系列--155. 最小栈

    栈:先入后出,后入先出 像电梯一样,先进入电梯的,走到电梯最深处,后进入电梯的,站在电梯门口, 所以电梯打开的时候,后进入的会先走出来,先进入的会后走出来. push,对应入电梯,把数据往里面压 po ...

  9. leadcode的Hot100系列--78. 子集--回溯

    上一篇说了使用位运算来进行子集输出,这里使用回溯的方法来进行排序. 回溯的思想,我的理解就是: 把解的所有情况转换为树或者图,然后用深度优先的原则来对所有的情况进行遍历解析. 当然,因为问题中会包涵这 ...

随机推荐

  1. Command 传参的几种方式

    Command可以根据CommandParameter传参 关键代码 public ICommand SubmitCommand => _submitCommand; private Relay ...

  2. 毫秒数据字符串转换为DateTime

    思路:取出毫秒结果,在1970年1月1日 00:00:00的基础上,加上毫秒数 string date = "/Date(1486363695453)/"; date = date ...

  3. Entity States

    Added. The entity does not yet exist in the database. The SaveChanges method must issue an INSERT st ...

  4. Bootstrap 反色导航条

    @{    Layout = null;}<!DOCTYPE html><html><head>    <meta name="viewport&q ...

  5. SQLServer 不允许保存更改的解决办法

    启动SQL Server  Management Studio 工具菜单----选项----Designers(设计器)----阻止保存要求重新创建表的更改 取消勾选即可.

  6. 高手问答精选:Go 语言 —— 云计算时代的 C 语言(类似于一个FAQ)

    Go 语言被称为云计算时代的 C 语言,它在软件开发效率和运行效率之间做出了绝佳的权衡.这使得它既适应于互联网应用的极速开发,又能在高并发.高性能的开发场景中如鱼得水.正因如此,许多互联网公司,尤其是 ...

  7. 零元学Expression Blend 4 - Chapter 27 PathlistBox被Selected时的蓝底蓝框问题

    原文:零元学Expression Blend 4 - Chapter 27 PathlistBox被Selected时的蓝底蓝框问题 最近收到网友Cloud的来信,询问我有关放进PathlistBox ...

  8. java的clone()、浅拷贝与深拷贝

    clone()方法是Object的native方法.protected native Object clone() throws CloneNotSupportedException;  声明为pro ...

  9. Android零基础入门第68节:完善RecyclerView,添加首尾视图

    在之前学习ListView的时候,有学习过如何给ListView添加列表头和列表尾.但是通过近几期的学习,发现RecyclerView是一个比ListView更加强大和灵活的组件,今天一起来学习如何给 ...

  10. 关于git远程分支操作

    对于用户来说,git给人提交到本地的机会.我们可以在自己的机器上创建不同的branch,来测试和存放不同的代码. 对于代码管理员而言,git有许多优良的特性.管理着不同的分支,同一套源代码可以出不一样 ...