您的位置:首页 > 其它

_____________________________________动态规划之最长子序列问题______1:两个序列中的______________________________________

2015-12-06 12:15 489 查看
动态规划之最长自序列问题....两个字符串中的最长子序列问题.

参考例题杭电1159.....参考文件.lcy老师的课件....在此对lcy老师致敬..

最长子序列问题.......

下面附上题目

简言之 就是给你两个 字符串 让你从中找出 最长递增 公共子序列

题目的意思就是....给你两个字符串序列求出他们的最长自序列..........下面附上lcy老师可见的截图

..



以第一个图的公式为基础,推导出下一个图的数字.

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<stack>
#include<string>
#include<sstream>
#include<map>
#include<cctype>
using namespace std;
char a[2222],b[2222];
int c[500][500];
int main()
{
int i=0,j=0,a1,b1;
while(scanf("%s%s",a,b)!=EOF)
{
a1=strlen(a);
b1=strlen(b);
memset(c,0,sizeof(c));
for(i=1;i<=a1;i++)
{
for(j=1;j<=b1;j++)
{
if(a[i-1]==b[j-1])
c[i][j]=c[i-1][j-1]+1;       // 相等的话 取  右上角
else
c[i][j]=max(c[i-1][j],c[i][j-1]);  //   不相等 的话  在 左边或上边 取一个最大的
}
}
printf("%d\n",c[a1][b1]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: