前言:最近做了一些国内大厂的笔试,发现国内大厂很喜欢考动态规划。这篇文章记录一下自己对动态规划的学习。

计划在26号之前练习二十道左右的DP题,题的来源选择leetcode吧,难度主要在在medium和hard之间。

针对几个比较经典的题目,会写具体的文章去分析。

动态规划一般解决什么问题

1.计数

  • 有多少种方式走到右下角
  • 有多少种方法选出k个数使得和是sum

2.求最大最小值

  • 从左上角走到右下角路径的最大数字和
  • 最长上升子序列长度

3.求存在性

  • 取石子(取书)游戏,先手是否必胜
  • 能不能选出k个数使得和是Sum

我们先以coin change这个题目来举例分析动态规划的一般解题思路

动态规划组成部分一:确定状态

  • 状态是定海神针
  • 简单的说,解决动态规划的时候一般需要开一个数组,数组的每个元素F[i]或者F[i][j]代表什么
  • 确定状态需要两个意识

1.最后一步

2.子问题

动态规划组成部分二:转移方程

  • 设状态F[x] = 最少用多少枚硬币拼出x
  • 对任意x,F[x] = min{F[x-2]+1,F[x-5]+1,F[x-7]+1}

动态规划组成部分三:初始条件和边界条件

  • x-2,x-5或者x-7小于0怎么办?什么时候停下?
  • 如果拼不出Y,怎么定义F[Y],(可以考虑定义为F[Y]=amount+1) 最后如果F[x]=amount+1说明拼不出来
  • 还有比如F(1)=min{F[-1]+1,F[-4]+1,F[-6]+1},此时是因为1块钱太少,没法用拼出来。说明我们在每一步dp前要判断进入状态转移的条件是否满足,不满足就不进行状态转移的操作。
  • 初始条件F[0]=0

动态规划组成部分四:计算顺序

  • 每一步尝试三种硬币,一种27步
  • 与递归算法相比,没有任何重复计算
  • 算法时间复杂度:27*3 如果要拼成的金额为n,有m种硬币,那么时间复杂度为m*n

coin change(leetcode300)代码如下

class Solution {public int coinChange(int[] coins, int amount) {//corner case if(coins==null||coins.length==0)return 0;int []dp = new int[amount+1];Arrays.fill(dp,amount+1);dp[0]=0;for(int i=1;i<=amount;i++){for(int j=0;j<coins.length;j++){if(i-coins[j]>=0){dp[i]=Math.min(dp[i],dp[i-coins[j]]+1);}}}return dp[amount]==amount+1? -1:dp[amount];}
}

小菜找实习-动态规划相关推荐

  1. 未明学院:找实习是门“玄学”?学姐这份券商、咨询、500强企业实习经验收藏好!

    作者: X同学,未明学院训练营优秀学员 我是一名商科大四在读的学生,从大二开始自己摸索着接触了很多种类的实习,前前后后有券商营业部.科创板投行.英国咨询公司.本土咨询公司.券商行业研究部门等不同类型的 ...

  2. 我是如何找实习 (or 工作)的

    引子 在百糯也干了一个月活了,从学校出来前实验室的同学就问我找实习该看哪些书,讲了一圈他们说让我写下来吧我说好.结果一拖就拖到现在了. 工作了一段时间之后才逐渐明白面试官所问的东西的目的.这里就说下自 ...

  3. 2015年找实习心得总结

    1.CVTE 一家做电视的公司吧?给的福利很好的样子,不过对招的人没什么要求,我们这个专业好多人去了.那天下午在大学城中心酒店咖啡厅面试,人很多,等了快两个小时.进去一个面试官对3个人. 进去自我介绍 ...

  4. 【原创】再见,CVT----记搓人的第一次找实习

    大三下学期了,班里的同学们考研的考研,准备找工作的找工作,为了给自己增加一点实习经验,本人开始了坎坷的找实习之旅,天天在各大网站兜兜转转,无奈大武汉实习实在不多,只能退而求其次找暑期实习.正好在应届生 ...

  5. 【找实习啊找实习(一)】

    由于听闻今年的就业形势不好(淘宝限招等事件),搞得我也慌了,所以特别开始早点准备.由于之前错过了tx的校招让我后悔不已,所以现在基本给笔试和面试的,我都会去.庆幸的是51之前就已经拿到了两份offer ...

  6. 如何设计一款大学生找实习的APP?

    最近帮一个朋友设计了一个简单的找实习类APP原型,此APP的作用主要是帮助大学生找实习,帮助企业找人才,帮助教师管理实习,使校企合作更紧密,建立学生--企业--学校三者之间的关系,解决目前职业教育与应 ...

  7. 4月21日云栖精选夜读:【校园头条】第1期:找实习、找工作时,让你脱颖而出的秘籍...

    你还在为寻找一个工作而苦苦追求吗?你想在面试的时候能脱颖而出吗?现在小编为大家准备了找工作的秘籍,这个秘籍一般人我可是不会告诉他的呢!要知道有时候你与工作的距离仅仅只有一个秘籍的差距,看完这个秘籍也许 ...

  8. java面试换背景颜色_实习|渣二本Java菜鸡0 Offer的春招血泪史,一定要主动去找实习呀!

    作者:codingCoge 链接:https://www.nowcoder.com/discuss/177823 来源:牛客网 前言: 一个菜鸡的春招血泪史,共勉 到现在还是0offer 先玄学求一波 ...

  9. 应届生去软通动力怎么样_超强干货:应届生如何找实习工作?

    在这金九银十的季节,很多应届生都在忙着秋招. 不管是宣讲会还是招聘会可能都跑了个遍. 因为每天有很多应届生咨询我求职的事情. 今天索性就用一篇文章争取为大家讲透应届生如何找实习工作? 其实对于应届生来 ...

  10. 如何找实习工作?怎么准备?

    你好,我是田哥. 最近,有不少朋友咨询我:如何准备找实习工作? 下学习就大四了,很多人还在愁如何准备找实习工作,由于学校学的和工作中用的技术,存在一些偏差,所以,仅仅是学校学的那点知识,出来找工作肯定 ...

最新文章

  1. 7.1.1 [Enterprise Library]缓存应用程序块场景和目标
  2. docker构建镜像 发布镜像
  3. 使用 IIS Manager 对 Windows Azure 网站进行远程管理
  4. c++连接mongodb出错
  5. centos mysql php tomcat_centos 一键部署安装nginx,mysql,php,apache,tomcat,redis等包合集
  6. c语言中规定,程序中各函数之间,C语言题库-函数_(参考).doc
  7. linux内核分成如下五个子系统,linux内核主要由5个子系统 Linux内核由哪几个子系统组成?...
  8. 解题报告 keke 的房子
  9. 通信、计算机、电子相关专业技术工作
  10. o型圈沟槽设计软件_265 电机壳体上轴承室和轴承外圈增加的O型圈工艺对轴承外圈(防蠕动)作用有多大?...
  11. 孤傲授权系统网站源码
  12. 【转】大话程序猿眼里的高并发
  13. 新款iPad Pro曝光:搭载A14x仿生芯片 支持5G
  14. mysql数据库备份和还原的命令_Mysql数据库备份和还原常用的命令
  15. 【渝粤教育】国家开放大学2018年秋季 0553-22T色彩 参考试题
  16. 全新 ENVI Modeler 遥感建模工具
  17. python查看opencv版本
  18. AB PLC和ESD维护及灯的含义
  19. 美通企业日报 | 信达生物与礼来制药达成战略合作;希尔顿旗下康莱德酒店亮相天津...
  20. Linux Mint 19.2版安装教程

热门文章

  1. sql server里执行delete或者update操作产生大量事务日志,导致空间不够,执行失败,能不能设置此类动作时不生成事务日志的...
  2. Mysql-DML操作
  3. LockSupport类中的park()和unpark()
  4. Mysql常见的日期查询语句
  5. Hibernate二级缓存以及ehcache的搭建配置
  6. 源码专题之spring设计模式:策略模式、原型模式、模板模式
  7. 【设计模式】03-抽象工厂模式
  8. 输入法相关的使用(跳转)
  9. ARM汇编初探---汇编代码中都有哪几类指令---ARM伪指令介绍
  10. iOS AutoLayout自动布局中级开发教程(2)-等宽等高等中心