一、动态规划的概念 动态规划(Dynamic Programming)是通过组合子问题的解而解决整个问题的。分治是指将问题划分成一些独立的子问题,递归地求解各子问题,然后合并子问题的解而得到原始问题的解,与此不同,动态规划适用于子问题不是独立的情况,也就是各个子问题包含公共的子问题。在这种情况下,采 ...
分类:
编程语言 时间:
2017-08-21 12:43:53
阅读次数:
229
此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置。 题目链接:http://poj.org/problem?id=1458 题目大意: 有若干组数据,每组给出两个字符串(中间用任意数量的空格间隔),输出这两个字符串最长公共子序列的长度。每次输出后换行。 分析: 动态规划求LCS,f ...
分类:
其他好文 时间:
2017-08-20 10:07:20
阅读次数:
200
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 题意: 给你一个字符串s,你可以在s中的任意位置添加任意字符,问你将s变成一个回文串最少需要添加字符的个数。 题解1(LCS): 很神奇的做法。 先求s和s的反串的LCS,也就是原串中已经满足回文 ...
分类:
其他好文 时间:
2017-08-16 23:22:46
阅读次数:
422
主要参考: 算法导论 最长公共子序列LCS(动态规划) 其中,理解递推公式之后,要理解代码中的c数组 是怎么变化的(结合下面这个图的过程,过程为:每一行,从左到右) 该文章中,打印LCS的过程(C语言,包括递归和非递归版本)也容易看懂。 Java版本可以参考:最长公共子串、最长公共子序列的Java实 ...
分类:
其他好文 时间:
2017-08-16 21:44:08
阅读次数:
155
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续 ...
分类:
其他好文 时间:
2017-08-14 21:33:04
阅读次数:
175
题目背景 DJL为了避免成为一只咸鱼,来找Johann学习怎么求最长公共子序列。 题目描述 经过长时间的摸索和练习,DJL终于学会了怎么求LCS。Johann感觉DJL孺子可教,就给他布置了一个课后作业: 给定两个长度分别为n和m的序列,序列中的每个元素都是正整数。保证每个序列中的各个元素互不相同。 ...
分类:
其他好文 时间:
2017-08-14 10:20:54
阅读次数:
147
P3402 最长公共子序列 P3402 最长公共子序列 P3402 最长公共子序列 题目背景 DJL为了避免成为一只咸鱼,来找Johann学习怎么求最长公共子序列。 题目描述 经过长时间的摸索和练习,DJL终于学会了怎么求LCS。Johann感觉DJL孺子可教,就给他布置了一个课后作业: 给定两个长 ...
分类:
其他好文 时间:
2017-08-13 20:50:24
阅读次数:
191
https://www.luogu.org/problem/show?pid=2543#sub 题目描述 输入输出格式 输入格式: 输入文件中包含两个字符串X和Y。当中两字符串非0即1。序列长度均小于9999。 输出格式: X和Y的最长公共子序列长度。 输入输出样例 输入样例#1: 01010101 ...
分类:
其他好文 时间:
2017-08-13 00:14:21
阅读次数:
120
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 题目大意:给一个字符串,问最少加多少个字母能成为回文串。 关键思想:要解决的是回文子序列问题而不是回文子串。回文子序列怎么求?可以把字符串倒转一下,再求他们的最长公共子序列啊!想一想为什么。求出L ...
分类:
其他好文 时间:
2017-08-12 21:15:03
阅读次数:
175
递推方程: 0, i = 0 or j = 0 C[i,j] = C[i-1,j-1] + 1, i,j > 0 and Xi = Yj max{C[i-1,j],C[i,j-1]}, i,j > 0 and Xi != Yj Xn串和Ym串,从后往前看,如果Xn=Ym,则最长公共子序列为Xn-1和 ...
分类:
其他好文 时间:
2017-08-12 20:28:11
阅读次数:
124