zoukankan      html  css  js  c++  java
  • 最长公共子序列动态规划方程

    动态规划的一个计算两个序列的最长公共子序列的方法如下:
    [1] 以两个序列 X、Y 为例子: 设有二维数组f[i,j] 表示 X 的 i 位和 Y 的 j 位之前的最长公共子序列的长度,
    则有: f[1][1] = same(1,1); f[i,j] = max{f[i-1][j -1] + same(i,j),f[i-1,j],f[i,j-1]};
    其中,same(a,b)当 X 的第 a 位与 Y 的第 b 位相同时为“1”,否则为“0”。
    此时,二维数组中最大的数便是 X 和 Y 的最长公共子序列的长度,依据该数组回溯,便可找出最长公共子序列。
    该算法的空间、时间复杂度均为O(n^2),经过优化后,空间复杂度可为O(n)。
  • 相关阅读:
    显示多行字符串
    dowhile
    获取系统的相关文件夹
    DLL 实际应用版本
    ShellExecute
    LoadLibrary
    MFC DLL的创建
    在DLL中存放资源
    替换字符串
    RemoveDirectoryB
  • 原文地址:https://www.cnblogs.com/likeghee/p/11769836.html
Copyright © 2011-2022 走看看