首页 > 其他 > 详细

hdu 1159

时间:2014-05-07 20:07:07      阅读:437      评论:0      收藏:0      [点我收藏+]

题意:求最长子序列

bubuko.com,布布扣
#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;
}


bubuko.com,布布扣

 

hdu 1159,布布扣,bubuko.com

hdu 1159

原文:http://www.cnblogs.com/zhangdashuai/p/3709708.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!