UVa 10405: Longest Common Subsequence

来源:互联网 发布:亚马逊关键词排名优化 编辑:程序博客网 时间:2024/05/29 19:15

这道题跟111这题是很相似的,只不过数组换成了字符串,还更简单一点。

值得注意的一点是读入字串的时候要用getline,而不是cin,也就是说要一行一行的读,因为字串里面可能含有空格。

#include <iostream>#include <cstring>using namespace std;int f[1010][1010]={0};int main(){    string a,b;    while(getline(cin,a))    {       getline(cin,b);       a=' '+a;       b=' '+b;     memset(f,0,sizeof(f));    for(int i=1;i<a.size();i++)     for(int j=1;j<b.size();j++)     {         if(b[j]==a[i])         f[i][j]=f[i-1][j-1]+1;         else         {             if(f[i-1][j]>f[i][j-1])             f[i][j]=f[i-1][j];             else f[i][j]=f[i][j-1];         }     }     int max=0;     for(int i=0;i<a.size();i++)      for(int j=0;j<b.size();j++)       if(f[i][j]>max) max=f[i][j];    cout<<max<<endl;    a.clear();    b.clear();    }  return 0;}


原创粉丝点击