风雪梦

柳絮因风起

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  4 Posts :: 76 Stories :: 3 Comments :: 0 Trackbacks

常用链接

留言簿

我参与的团队

搜索

  •  

最新评论

  • 1. re: LightOJ1080 Binary Simulation
  • 话说加个PushDown操作不就OK了咩?
  • --仗剑奔走天涯
  • 2. re: 正式开博
  • 加油!
  • --leafcloudsky
  • 3. re: 启航杯啊
  • 太屎了!!我竟然就这么的WA了两次,最终发现,第四题少了两句初始化,第五题把数组开错地方了,算法没问题,结果就这么从四题跌到二题,太伤不起了!!可怜我调spfa调了一晚上!!尼玛啊!!
  • --浅雨歌

阅读排行榜

评论排行榜

给定两个序列,求两个序列的最长公共子序列的长度(暂时先列出来长度好了……)
如此经典的DP,我竟然现在才弄明白,真心弱爆了,好吧,废话不说了,开始吧。
对于两个序列,dp[i][j]表示当第一个序列取前i个元素,第二个序列取前j个元素的时候,最长公共子序列的长度,那么对于此状态,有如下几种推导方式,假设第一个序列是X(x1,x2...xi),第二个序列是Y(y1,y2...yj),如果xi=yj,则dp[i][j]=dp[i-1][j-1]+1,否则,就等于dp[i-1][j]或者dp[i][j-1]。理由如下,假设X和Y的最长公共子序列为Z(z1,z2,...zk),如果xi=yj,必然有xi=yj=zk,如果xi≠yj,而且xi≠zk,则Z必然是Xi-1和Y的一个最长公共子序列,因为xi存在与否根本不影响最终的结果,而zk必然存在于X的前i-1个元素中,否则不成立,同理可运用于Y序列,所以可以得到推导关系。
刚刚把代码YY出来,不知道对不对,希望某一个大牛出来指正一下……
特别鸣谢:磊哥ZLGG

view code
posted on 2012-11-14 18:16 浅雨歌 阅读(131) 评论(0)  编辑 收藏 引用 所属分类: DP

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理