_____________________________________动态规划之最长子序列问题______1:两个序列中的______________________________________
动态规划之最长自序列问题....两个字符串中的最长子序列问题.
参考例题杭电1159.....参考文件.lcy老师的课件....在此对lcy老师致敬..
最长子序列问题.......
下面附上题目
简言之 就是给你两个 字符串 让你从中找出 最长递增 公共子序列
题目的意思就是....给你两个字符串序列求出他们的最长自序列..........下面附上lcy老师可见的截图
..以第一个图的公式为基础,推导出下一个图的数字.
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<queue> 7 #include<vector> 8 #include<set> 9 #include<stack> 10 #include<string> 11 #include<sstream> 12 #include<map> 13 #include<cctype> 14 using namespace std; 15 char a[2222],b[2222]; 16 int c[500][500]; 17 int main() 18 { 19 int i=0,j=0,a1,b1; 20 while(scanf("%s%s",a,b)!=EOF) 21 { 22 a1=strlen(a); 23 b1=strlen(b); 24 memset(c,0,sizeof(c)); 25 for(i=1;i<=a1;i++) 26 { 27 for(j=1;j<=b1;j++) 28 { 29 if(a[i-1]==b[j-1]) 30 c[i][j]=c[i-1][j-1]+1; // 相等的话 取 右上角 31 else 32 c[i][j]=max(c[i-1][j],c[i][j-1]); // 不相等 的话 在 左边或上边 取一个最大的 33 } 34 } 35 printf("%d\n",c[a1][b1]); 36 } 37 return 0; 38 }