zoukankan      html  css  js  c++  java
  • LCS问题

    1,dp[i][j]代表的时s1到si序列和t1到ti序列对应的LCS的长度

    由此,s1到s(i+1)和t1到t(j+1)对应的公共子列可能是

    ①当s(i+1)==t(j+1),在s1到si和t1到ti的公共子列末尾加上s(i+1)

    ②s1到si和t1到t(i+1)的公共子列

    ③s1到s(i+1)和t1到ti的公共子列

    2,不过你说这也挺神奇的,就这么一点,也没其他东西就能算出来。

    3,我tm真想把这上面的复制到这上面去。

    #include<iostream>
    using namespace std;
    const int maxn=1005;
    int n,m;
    char s[maxn],t[maxn];
    int dp[maxn][maxn];
    int main(){
        cin>>n>>m;
        for(int i=0;i<n;i++){cin>>s[i];cin>>t[i];
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(s[i]==t[j]){dp[i+1][j+1]=dp[i][j]+1;
                }
                else{dp[i+1][j+1]=max(dp[i][j+1],dp[j+1][i]);
                }
            }
        }
        cout<<dp[n][m]<<endl;
        
    } 

    4,我们开始费大,和费小,

    费大的话这种字母这东西我就当数字了。关键是,状态的设置,简直如同羚羊挂角,无迹可寻。呵呵,这不是描述刀的嘛??

    我觉得这个可以当成一个一维的找相同的问题。

    一维儿子找相同问题。

    那状态设置呢?

    开门见山,正对题目。那递推式子怎么来。

    递推式子的话先想特殊情况,比如相等了什么啦

    关于dp的费小,实在是。。。总结出dp思想也行。毕竟dp只要你设计出好的状态,出来递推式子,基本上就没有问题了。

  • 相关阅读:
    C++ 二叉树的实现
    T-SQL---事务操作
    CSS3---last-of-type选择器
    CSS3---nth-of-type(n)选择器
    CSS3---first-of-type选择器
    CSS3---结构性伪类选择器—nth-last-child(n)
    CSS3---结构性伪类选择器—nth-child(n)
    CSS3---结构性伪类选择器—last-child
    CSS3---结构性伪类选择器—first-child
    CSS3---结构性伪类选择器—target
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12144441.html
Copyright © 2011-2022 走看看