首页 > 代码库 > hdu 1159
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;
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。