随笔分类 -  动态规划

摘要:N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列)。当所给的整数均为负数时和为0。 例如:-2,11,-4,13,-5 阅读全文
posted @ 2019-07-20 15:41 YF-1994 阅读(133) 评论(0) 推荐(0)
摘要:一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解 阅读全文
posted @ 2019-07-20 15:11 YF-1994 阅读(304) 评论(0) 推荐(0)
摘要:给定一个 m × n 的网格和一个球。球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上、下、左、右四个方向上移动使球穿过网格边界。但是,你最多可以移动 N 次。找出可以将球移出边界的路径数量。答案可能非常大,返回 结果 mod 109 + 7 的值。 示例 1:输入: m = 2 阅读全文
posted @ 2019-07-20 14:55 YF-1994 阅读(303) 评论(0) 推荐(0)
摘要:给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:"bbbab"输出:4一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2一个可能的最长回文子序列为 "bb"。算法:动态规划 阅读全文
posted @ 2019-07-20 14:18 YF-1994 阅读(216) 评论(0) 推荐(0)
摘要:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4算法:动态规划 阅读全文
posted @ 2019-07-20 13:41 YF-1994 阅读(146) 评论(0) 推荐(0)
摘要:回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。每个字符串都可以通过向中间添加一些字符,使之变为回文字符串。 例如:abbc 添加2个字符可以变为 acbbca,也可以添加3个变为 abbcbba。方案1只需要添加2个字符,是所有方案中添加字符数量最少的。 现在,给定一个字 阅读全文
posted @ 2019-07-20 00:07 YF-1994 阅读(2574) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std; #define N 1010 int dp[N][N]; char c; int main() { char a[N]; char b[N]; scanf("%s%s",a,b); int la=strlen(a); int lb=strlen... 阅读全文
posted @ 2019-07-19 20:00 YF-1994 阅读(531) 评论(0) 推荐(0)
摘要:给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> ro 阅读全文
posted @ 2019-07-17 16:47 YF-1994 阅读(118) 评论(0) 推荐(0)
摘要:给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数N和M。 第二行包含一个长度为N的字符串,表示字符串A。 第三行包含一个长度为M的字符串,表示字符串B。 字符串均由小写字母构成。 输出格式 输出一个整数,表示最大长度。 数据 阅读全文
posted @ 2019-07-17 16:43 YF-1994 阅读(186) 评论(0) 推荐(0)
摘要:DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以配对合成为DNA的双螺旋结构。现在给出两条碱基链,允许在其中一条上做替换操作:把序列 阅读全文
posted @ 2019-07-15 16:36 YF-1994 阅读(1038) 评论(0) 推荐(0)
摘要:给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 算法:动态规划。我们用f[i]表示i个结点的BST有多少种。那么左子树可能为0,1,...n-1。对应的右子树则为n-1,...0。根据排列组合知,总数为f[k]*f[n-k-1]求和。 阅读全文
posted @ 2019-07-10 21:38 YF-1994 阅读(131) 评论(0) 推荐(0)
摘要:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 阅读全文
posted @ 2019-07-09 11:16 YF-1994 阅读(302) 评论(0) 推荐(0)
摘要:有n堆石头,现在请将它们分成两堆,并要求两堆的重量和尽可能接近,输出两堆石头的重量和,结果按降序排列。 算法:动态规划 阅读全文
posted @ 2019-07-08 22:28 YF-1994 阅读(343) 评论(0) 推荐(0)
摘要:给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。 示例: nums = [1, 2, 3]target = 4 所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1) 请注意,顺序不同的序列 阅读全文
posted @ 2019-07-08 22:21 YF-1994 阅读(174) 评论(0) 推荐(0)
摘要:给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。返回仅包含 1 的最长(连续)子数组的长度。 示例 1:输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释: [1,1,1,0,0,1,1,1,1,1,1]粗体数字从 0 翻转 阅读全文
posted @ 2019-07-08 18:01 YF-1994 阅读(1570) 评论(0) 推荐(0)
摘要:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。算法:动态规划。设f[i]表示以第i个元素结尾时最大子序和。 那么 阅读全文
posted @ 2019-07-08 17:52 YF-1994 阅读(103) 评论(0) 推荐(0)
摘要:给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9 阅读全文
posted @ 2019-07-08 17:34 YF-1994 阅读(705) 评论(0) 推荐(0)
摘要:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 阅读全文
posted @ 2019-07-08 17:06 YF-1994 阅读(152) 评论(0) 推荐(0)
摘要:给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。 注意这里是找连续子串。 算法:动态规划。f[i][j]表示第一个字符串前i个字符中与第二个字符串前j个中的最长连续子串长度 那么状态转移为:当s1(i)==s2(j)时,f[i][j]=max(f[i][j],f[i-1][j 阅读全文
posted @ 2019-07-08 16:50 YF-1994 阅读(1355) 评论(0) 推荐(0)