![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
宋丹尼尔
不相信莫名其妙的事情
展开
-
跳房子——动态规划
存在n+1个房间,每个房间依次为房间1 2 3…i,每个房间都存在一个传送门,i房间的传送门可以把人传送到房间pi(1<=pi<=i),现在路人甲从房间1开始出发(当前房间1即第一次访问),每次移动他有两种移动策略:A. 如果访问过当前房间 i 偶数次,那么下一次移动到房间i+1;B. 如果访问过当前房间 i 奇数次,那么移动到房间pi;现在路人甲想知道移动到房间n+1一共需要多少次移动;输入描述:第一行包括一个数字n(30%数据1<=n<=100,100%数据 1<原创 2021-06-04 18:27:36 · 1192 阅读 · 0 评论 -
最长上升子串——动态规划
广场上站着一支队伍,她们是来自全国各地的扭秧歌代表队,现在有她们的身高数据,请你帮忙找出身高依次递增的子序列。 例如队伍的身高数据是(1、7、3、5、9、4、8),其中依次递增的子序列有(1、7),(1、3、5、9),(1、3、4、8)等,其中最长的长度为4。思路:定义一个dp[n]数组,dp[i]表示以0-i为下标字符串中的最长子序列长度。定义j的范围为0到i-1,如果原数组的arr[j]的值小于arr[i];则比较dp[i]和dp[j]+1值得大小替代dp[i].代码如下:import java.原创 2021-06-02 20:47:23 · 335 阅读 · 0 评论 -
最长公共子序列——动态规划
我们有两个字符串m和n,如果它们的子串a和b内容相同,则称a和b是m和n的公共子序列。子串中的字符不一定在原字符串中连续。例如字符串“abcfbc”和“abfcab”,其中“abc”同时出现在两个字符串中,因此“abc”是它们的公共子序列。此外,“ab”、“af”等都是它们的字串。现在给你两个任意字符串(不包含空格),请帮忙计算它们的最长公共子序列的长度。输入包含多组数据。每组数据包含两个字符串m和n,它们仅包含字母,并且长度不超过1024。对应每组输入,输出最长公共子序列的长度。思路:建立一个dp原创 2021-06-02 18:35:53 · 181 阅读 · 0 评论 -
蘑菇阵——动态规划
现在有两个好友A和B,住在一片长有蘑菇的由n*m个方格组成的草地,A在(1,1),B在(n,m)。现在A想要拜访B,由于她只想去B的家,所以每次她只会走(i,j+1)或(i+1,j)这样的路线,在草地上有k个蘑菇种在格子里(多个蘑菇可能在同一方格),问:A如果每一步随机选择的话(若她在边界上,则只有一种选择),那么她不碰到蘑菇走到B的家的概率是多少?输入描述:第一行N,M,K(1 ≤ N,M ≤ 20, k ≤ 100),N,M为草地大小,接下来K行,每行两个整数x,y,代表(x,y)处有一个蘑菇。输原创 2021-06-01 18:57:10 · 208 阅读 · 0 评论