zoukankan      html  css  js  c++  java
  • hdu 1159

    题意:求最长子序列

    #include<iostream>
    #include<cstring>
    using namespace std;
    int max(int x,int y)
    {
        if(x>y) return x;
        return y;
    }
    int map[1001][1001];
    char s1[1001],s2[1001];
    int main()
    {
        
        while(cin>>s1+1>>s2+1)
        {
            memset(map,0,sizeof(map));
            int l1=strlen(s1+1);
            int l2=strlen(s2+1);
            for(int  i=1;i<=l1;i++)
                for(int j=1;j<=l2;j++)//每次取i段与l2比较 取最大值
                {
                    if(s1[i]==s2[j])        
                        map[i][j]=max(map[i-1][j],map[i-1][j-1]+1);//有两个状态1 取(i-1)段算到j时的最大值 也就是上一次算的这是一个状态
                    //2取i-1段算到j-1时的最大值+1
                    //这是一个决策        
                    else            
                        map[i][j]=max(map[i-1][j],map[i][j-1]);
                    
                }
                cout<<map[l1][l2]<<endl;
        }
        return 0;
    }


  • 相关阅读:
    Poj-1088-滑雪
    Poj-2250-Compromise
    CF
    KMP算法
    01背包
    NY 269 VF
    PHP--1+2+3……100=?
    PHP企业发放的奖金--if...elseif...
    2019年中级考试题(附答案)
    PHP的IF条件语句-- 输入一个数字进行判断等级
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3709708.html
Copyright © 2011-2022 走看看