动态规划:适用于子问题不是独立的情况,也就是各子问题包含子子问题,若用分治算法,则会做很多不必要的工作,重复的求解子问题,动态规划对每个子子问题,只求解一次将其结果保存在一张表中,从而避免重复计算。

动态规划最优化问题中的两个要素:最优子结构和重叠子问题

动态规划是以自底向上的方式来利用最优子结构,寻找问题的一个最优解需要在子问题中做出选择,即选择将用哪一个来求解问题

leetcode中的对应题目

1.其中dp[i]表示i节点的最终要求

  1. Climbing Stairs # step[i] = step[i - 1] + step[i - 2]

  2. Maximum Subarray

  3. House Robber #rob(i) = max(rob(i-2)+currentHouseValue,rob(i - 1))

  718.Maximum Length of Repeated Subarray //samecount [ row ] [ col]=samecount[row-1] [col-1]+1;

给定二维矩阵,矩阵中不同的整数值,找到一条最短路径,只能右、下。 https://github.com/AntonioSu/leetcode/blob/master/problems/64.MinimumPathSum.md

2.背包问题——下标具有意义

322.Coin Change 二维数组V(i,j):前 i 个物品,背包容量 j,所能取得的最大价值。 1) j<w(i) V(i,j)=V(i-1,j) //如果当前容量小于第i个物品的重量,则不会装入此物品,

故而最大价值仍然为V(i-1,j) 2) j>=w(i) V(i,j)=max{ V(i-1,j),V(i-1,j-w(i))+v(i) }//表示装入物品,但同时需要预留w[i]空间,才可装入当前物品,但是装入不一定价值最大,所以需要比较

https://github.com/AntonioSu/leetcode/blob/master/problems/322_Coin_Change.md

3.dp[i] [j]表示i,j之间具有的最值

https://github.com/AntonioSu/leetcode/blob/master/problems/312.BurstBalloons.md

4.dp[i] [j]表示只是记录中间结果,最值不在数组中,需要保存一个max,或者min

https://github.com/AntonioSu/leetcode/blob/master/problems/221.MaximalSquare.md

https://github.com/AntonioSu/leetcode/blob/master/problems/85.MaximalRectangle.md

5.符合特定条件的转移方程 https://github.com/AntonioSu/leetcode/blob/master/problems/72.EditDistance.md

分治算法:https://www.cnblogs.com/AntonioSu/p/11865159.html

贪心算法:https://www.cnblogs.com/AntonioSu/p/11865139.html

LeetCode 动态规划的更多相关文章

  1. 快速上手leetcode动态规划题

    快速上手leetcode动态规划题 我现在是初学的状态,在此来记录我的刷题过程,便于以后复习巩固. 我leetcode从动态规划开始刷,语言用的java. 一.了解动态规划 我上网查了一下动态规划,了 ...

  2. [LeetCode] 动态规划入门题目

    最近接触了动态规划这个厉害的方法,还在慢慢地试着去了解这种思想,因此就在LeetCode上面找了几道比较简单的题目练了练手. 首先,动态规划是什么呢?很多人认为把它称作一种"算法" ...

  3. LeetCode动态规划题总结【持续更新】

    以下题号均为LeetCode题号,便于查看原题. 10. Regular Expression Matching 题意:实现字符串的正则匹配,包含'.' 和 '*'.'.' 匹配任意一个字符,&quo ...

  4. leetcode动态规划题目总结

    Hello everyone, I am a Chinese noob programmer. I have practiced questions on leetcode.com for 2 yea ...

  5. House Robber III leetcode 动态规划

    https://leetcode.com/submissions/detail/56095603/ 这是一道不错的DP题!自己想了好久没有清晰的思路,参看大神博客!http://siukwan.sin ...

  6. Leetcode 动态规划 - 简单

    1. 最大子序和 (53) 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输 ...

  7. [Leetcode][动态规划] 第935题 骑士拨号器

    一.题目描述 国际象棋中的骑士可以按下图所示进行移动:                           我们将 “骑士” 放在电话拨号盘的任意数字键(如上图所示)上,接下来,骑士将会跳 N-1 步 ...

  8. [Leetcode][动态规划] 第931题 下降路径最小和

    一.题目描述 给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和. 下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素.在下一行选择的元素和当前行所选元素最多相隔一列. 示 ...

  9. [Leetcode][动态规划] 零钱兑换

    一.题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: ...

随机推荐

  1. bps和pps

    bps,比特率指的是每秒传输比特数 在实际所说的1M带宽的意思是1Mbps(是兆比特每秒Mbps不是兆字节每秒MBps) pps(数据包每秒),常用的网络吞吐率的单位(即每秒发送多少个分组数据包),网 ...

  2. Druid-代码段-1-4

    所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应流程1.3,连接可用性测试: //数据库连接可用性测试 protected boolean testConnectionInte ...

  3. acwing 652. 切蛋糕

    题目地址 今天是小Z的生日,同学们为他带来了一块蛋糕. 这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大,但小Z ...

  4. LG5202 「USACO2019JAN」Redistricting 动态规划+堆/单调队列优化

    问题描述 LG5202 题解 \[opt[i]=xx+(cnt[i]-cnt[yy]<=0)\] 发现\(cnt[i]-cnt[yy] <= 0\)只能有两种取值 于是直接堆优化即可 \( ...

  5. 初学Python:Python的发展历史及下载安装

    Python作为一种计算机程序设计语言,自20世纪90年代初诞生至如今被人们逐渐悉知,经过版本更新以及功能添加,已广泛应用于各种独立的.大型项目的开发.Python 已经成为最受欢迎的程序设计语言之一 ...

  6. 简单App项目的运行

    我和我的同伴两个人从网上下载一个仿微信登录源码,导入到eclipse中,两人结队练习这个源代码的操作, 运行项目到Android虚拟器上,显示效果为 我们还运行这个项目到手机设备上,显示效果为   接 ...

  7. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 6

    18.5.3  PDO的错误处理模式 PDO共提供了3种不同的错误处理模式,不仅可以满足不同风格的编程,也可以调整扩展处理错误的方式. 1.PDO::ERRMODE_SILENT 这是默认模式,在错误 ...

  8. Hbase内存磁盘大致关系

    转自: https://blog.csdn.net/wuwenxiang91322/article/details/51595771 Hbase内存磁盘关系磁盘数 diskNum磁盘容量 diskCa ...

  9. pytest框架与unittest框架的对比

    一.pytest的优势 pytest是基于unittest之上的单元测试框架,它的优势如下: 自动发现测试模块和测试方法 断言使用 assert + 表达式 可以设置测试会话级(session).模块 ...

  10. Linux 安装指定版本Git

    git二进制文件下载地址: https://mirrors.edge.kernel.org/pub/software/scm/git/ 1.下载v2.21.0版本 wget https://mirro ...