![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 50
bh_xiaoxinba
这个作者很懒,什么都没留下…
展开
-
动态规划问题系列---Labyrinth(迷宫)
题目度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向上向下向右走以前没有走过的格子,每一个格子中都有一些金币(或正或负,有可能遇到强盗拦路抢劫,度度熊身上金币可以为负,需要给强盗写欠条),度度熊刚开始时身上金币数为0,问度度熊走出迷宫时候身上最多有多少金币? Input 输入的原创 2016-09-08 23:58:33 · 2281 阅读 · 0 评论 -
动态规划问题系统---climbing-stairs
题目给定n个台阶,每次走1个或2个台阶;总共有多少种走法?分析动态规划 dp[i]表示i个台阶的走法 dp[i]=dp[i-1]+dp[i-2]dp[0]=0; dp[1]=1; dp[2]=2;实现public static int climbStairs(int n){ if(n==0){ return 0; } i原创 2016-09-18 01:59:12 · 206 阅读 · 0 评论 -
动态规划问题系统---edit-distance
题目给定2个字符串,str1,str2,求这两个字符串的最小Edit Distance; Edit Distance:用于衡量两个strings之间的相似性。 两个strings之间的Minimum edit distance是指把其中一个string通过编辑(包括插入,删除,替换操作)转换为另一个string的最小操作数。分析那么如何找到两个strings的minimun edit dista原创 2016-09-18 01:10:55 · 285 阅读 · 0 评论 -
动态规划问题系列---Unique Paths II
题目给定一个m行n列矩阵,其中0表示空闲,1表示障碍物,求从0,0到m-1,n-1中的可通路径数目;(0表示可通)分析动态规划 设dp[i][j]表示从i,j到m-1,n-1的路径个数; 则转移方程:if(a[i][j]==0) dp[i][j]=dp[i+1][j]+dp[i][j+1]else dp[i][j]=0初始化if(a[m-1][n-1]==0) dp[m-1原创 2016-09-16 22:07:16 · 222 阅读 · 0 评论 -
动态规划问题系列---Minimum Path Sum(路线上元素和的最小值)
题目Minimum Path Sum(路线上元素和的最小值); 给定一个m行n列的矩阵,从左上角到右下角所有可能的路径中,求经过的元素和最小值。分析动态规划 dp[i][j]表示从i,j的位置到右下角的位置的所有可能路径中,经过的元素和的最小值; 则状态转移方程:dp[i][j]=min{dp[i+1][j],dp[i][j+1]}+a[i][j];初始化:dp[m-1][n-1]=a[m-1原创 2016-09-16 21:45:17 · 541 阅读 · 0 评论 -
动态规划问题系列---word break问题
题目 给定一个字符串和一个字典,在字符串中添加空格来构造一个句子,使句子中的每个单词在字典中都存在; 输入 :字符串 输出:所有可能的句子例如: s=”catsanddog” dict=[“cat”,”cats”,”and’,”sand”,”dog”] 输出:cats and dog和cat sand dog分析 将字符串分割成2部分s1和s2,如果s1包含在字典中,则递归计算s2;然转载 2016-09-12 01:40:10 · 388 阅读 · 0 评论 -
动态规划问题系列---扔玻璃珠
题目 某幢大楼有100层。你手里有两颗一模一样的玻璃珠。当你拿着玻璃珠在某一层往下扔的时候,一定会有两个结果,玻璃珠碎了或者没碎。这幢大楼有个临界楼层。低于它的楼层,往下扔玻璃珠,玻璃珠不会碎,等于或高于它的楼层,扔下玻璃珠,玻璃珠一定会碎。玻璃珠碎了就不能再扔。现在让你设计一种方式,使得在该方式下,最坏的情况扔的次数比其他任何方式最坏的次数都少。也就是设计一种最有效的方式。分析 1)最笨的办法原创 2016-09-11 21:36:57 · 2488 阅读 · 0 评论 -
旅行商问题(TSP问题)
题目 TSP问题(旅行商问题)是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次然后回到出发城市,并要求所走的路程最短。 假设现在有四个城市,0,1,2,3,他们之间的代价如图一,可以存成二维表的形式 现在要从城市0出发,最后又回到0,期间1,2,3都必须并且只能经过一次,使代价最小。分析 TSP问题是NP完全问题;原创 2016-09-09 21:54:07 · 27046 阅读 · 1 评论 -
动态规划问题系列---Disk Schedule
题目有很多从磁盘读取数据的需求,包括顺序读取、随机读取。为了提高效率,需要人为安排磁盘读取。然而,在现实中,这种做法很复杂。我们考虑一个相对简单的场景。 磁盘有许多轨道,每个轨道有许多扇区,用于存储数据。当我们想在特定扇区来读取数据时,磁头需要跳转到特定的轨道、具体扇区进行读取操作。为了简单,我们假设磁头可以在某个轨道顺时针或逆时针匀速旋转,旋转一周的时间是360个单位时间。磁头也可以随意移动到某原创 2016-09-09 17:05:22 · 351 阅读 · 0 评论 -
动态规划问题系列---连续子数组(二维)的最大和
题目1一维数组的连续子数组的最大和 输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间负责度为O(n)。分析假如输入数组为{1,-2,3,10,-4,7,2,-5},我们尝试从头到尾累加其中的正数,初始化和为0,第一步加上1,此时和为1,第二步加上-2,此时和为-1,第三步加上3,此时我们发现-1+3=2,最大和2反而比3一个单独的原创 2016-09-09 00:30:06 · 634 阅读 · 0 评论 -
动态规划系列---求数组中两个元素差的最大值
题目 求数组中两个元素差的最大值(后面的元素减去前面的元素);对应实际生活中的股票买卖,找出可能的最大收益;思路 类似于求数组连续和的最大值; 保存最大差值和最小值,遍历数组,如果当前元素-min>最大差值,则更新最大差值;如果当前元素<最小值,则更新最小值;实现public static int max_difference(int[] a){ int len=a.lengt原创 2016-11-15 21:55:22 · 3998 阅读 · 0 评论