一道dp基础题,给你两个序列,问你最长公共子序列是什么,比如:(a,b)是(a,c,d,b)的子序列。注意不是最长公共子串,这里的子序列可以不连续。
两个for循环就出来了,每一个dp[i][j]可以从dp[i-1][j-1]、dp[i-1][j]、dp[i][j-1]三种情况更新过来,取个最大的,然后把路径用123存下来,最后再顺着路径找然后逆序输出就行。...
                            
                            
                                分类:
其他好文   时间:
2015-04-26 10:54:56   
                                阅读次数:
126
                             
                         
                    
                        
                            
                            
                                http://www.cnblogs.com/zhangchaoyang/articles/2012070.html
把一个问题转换为若干个规模更小的子问题,并且都借助于一个二维矩阵来实现计算。
约定:字符串S去掉最后一个字符T后为S',T1和T2分别是S1和S2的最后一个字符。
则dist(S1,S2)是下列4个值的最小者:
1.dist(S1',S2')--...
                            
                            
                                分类:
其他好文   时间:
2015-04-26 09:15:27   
                                阅读次数:
118
                             
                         
                    
                        
                            
                            
                                出处http://segmentfault.com/blog/exploring/本章讲解:1. LCS(最长公共子序列)O(n^2)的时间复杂度,O(n^2)的空间复杂度;2. 与之类似但不同的最长公共子串方法。最长公共子串用动态规划可实现O(n^2)的时间复杂度,O(n^2)的空间复杂度;还可以...
                            
                            
                                分类:
编程语言   时间:
2015-04-23 15:05:12   
                                阅读次数:
306
                             
                         
                    
                        
                            
                            
                                同网上大多数lcs算法一样。实现都是用dp来实现。状态转移方程就不写了。反正熟练于心。打印出包含a和b的最短序列。当然,a和b中的字符在新序列中的相对位置是不会改变的。主要是熟悉一下代码:#include #include using namespace std;char a[1000],b[100...
                            
                            
                                分类:
其他好文   时间:
2015-04-23 02:00:05   
                                阅读次数:
166
                             
                         
                    
                        
                            
                            
                                1425: LCS与LIS
Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 55  Solved: 25
SubmitStatusWeb Board
Description
LCS(最长公共子序列)是单身,LIS(最长上升子序列)也是单身,于是他们在一起了,变成了LCIS(最长公共上升子序列)o(╯□╰)o。你的任务是求给定两个序列...
                            
                            
                                分类:
其他好文   时间:
2015-04-21 09:50:48   
                                阅读次数:
152
                             
                         
                    
                        
                            
                            
                                题目传送:UVA - 10192
思路:就是简单的最长公共子序列啦,不过输入居然还包含空格,然后很奇怪的TLE了,不是WA,心想n最大才100居然TLE,,好吧,可能有些数据特殊吧
AC代码:
#include 
#include 
#include 
using namespace std;
char s1[105], s2[105];
int dp[10...
                            
                            
                                分类:
其他好文   时间:
2015-04-21 09:46:30   
                                阅读次数:
196
                             
                         
                    
                        
                            
                            
                                最长公共子序列: dp[i][j] :当前子弹的最大得分,if ([i-1]==[j-1]) dp[i][j]=dp[i-1][j-1]+score[a[i-1]]; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); 1 #include 2 #inclu...
                            
                            
                                分类:
其他好文   时间:
2015-04-19 14:31:22   
                                阅读次数:
112
                             
                         
                    
                        
                            
                            
                                题目大意:
两种水果可以杂交出一种新的水果,现在要给新水果起名字,起名的规则是:
这个名字要包含之前两种水果的名字的字母,要按原本字符串中字符的相对顺序。并且这个
名字要尽可能的短。
思路:
先求出两种水果名字s1和s2最长公共子序列的长度,并且用pre[i][j]标记下dp[i][j]的上一个状态,
来得到每个字符在新的字符串中的状态。然后从(len1,len2)回溯输出新的字符串序列。
pre[i][j] == 0表示为上一个字符为公共子串,将s1[i-1]或s2[j-1]输出一次,pre[i][j]...
                            
                            
                                分类:
其他好文   时间:
2015-04-18 11:33:59   
                                阅读次数:
176
                             
                         
                    
                        
                            
                            
                                我们之前提到过过动态规划的几个经典问题: 
动态规划原理:http://blog.csdn.net/ii1245712564/article/details/45040037 
钢条切割问题:http://blog.csdn.net/ii1245712564/article/details/44464689  
矩阵链乘法问题:http://blog.csdn.net/ii1245712564/ar...
                            
                            
                                分类:
其他好文   时间:
2015-04-15 13:43:15   
                                阅读次数:
233