
动态规划
文章平均质量分 71
qingen123
生命不息 奋斗不止 LINUX爱好者 世界因你的敲打而改变
展开
-
最长公共子串的长度
有两个字符串,求两者最长公共子串的长度,如“AUQOOCPZ”和“OOCQ”的最长公共子串的OOC,返回长度为3。分析:显然可以用动态规划来做,设c[i][j]表示Xi={x1,x2,x3。。。xi}与Yj={y1,y2,。。。yj}的最长公共字串序列的长度;如果xi与yj形同,那么c[i][j]=c[i-1][j-1]+1;否则取c[i][j-1]与c[i-1][j]的较大值。其次要注意初始原创 2013-10-06 19:20:47 · 958 阅读 · 0 评论 -
数组子序列的个数
数组子序列的个数,比如4,14,2,3和14,1,2,3都为4,13,14,1,2,3的子序列。 对于给出序列a,有些子序列可能是相同的,这里只算做1个,要求输出a的不同子序列的数量。分析:如果对一个数组后面添加一个与前面都不同的数字构成一个新的数组,那么新的数组的子序列就是前面的子序列的个数乘以2,再加上新添加的数字;如果后面添加的数字前面出现过,那么按照上面的计算方式中存在重复的,将重复的原创 2013-10-06 22:43:04 · 2756 阅读 · 0 评论 -
源串修改为目标串共操作的次数以及最长公共子串
给定一个源串和目标串,能够对源串进行如下操作:1).在给定位置上插入一个字符2).替换任意字符3).删除任意字符写一个程序,返回最小操作次数,使得对源串进行这些操作后等于目标串。例如:源串”hello”,目标串”lleo”,则通过3次修改可以使得源串变成目标串(删除’h',删除’e',在’o'之前插入字符’e')分析:这和编程之美中求两串的最长子序列很类似,我们同样采用动态原创 2013-10-07 15:55:00 · 2342 阅读 · 0 评论