uva 10405 Longest Common Subsequence(最长公共子序列)

来源:互联网 发布:java高并发项目实战 编辑:程序博客网 时间:2024/05/02 09:44

经典的最长公共子序列问题,我刚开始用string敲的,就是为了练练手,没想到竟然wa了,还以为我用错了呢。。。换了字符数还是wa。。。真无语,这么简单的题快把我弄糊涂了,后来听人说是输入可能有空格。。。这是巨坑啊,题上都没说清楚,白白wa了几发。。。就是设一个数组d[i][j]遍历两个字符数组当a[i]==b[j]的时候d[i][j]=d[i-1][j-1]+1。不相等的时候就是d[i][j]=max(d[i-1][j],d[i][j-1])。别忘了初始化。真坑

代码:

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<vector>#include<set>#include<string>#include<algorithm>using namespace std;int d[1005][1005];int main(){string a,b;int i,j;while(getline(cin,a),getline(cin,b)){//for(i=0; i<=max(a.size(),b.size()); i++)//d[0][i] = d[i][0] = 0;memset(d,0,sizeof(d));for(i=1; i<=a.size(); i++)for(j=1; j<=b.size(); j++){if(a[i-1] == b[j-1]){d[i][j] = d[i-1][j-1]+1;}else{d[i][j] = max(d[i-1][j],d[i][j-1]);}}cout << d[a.size()][b.size()] << endl;a.clear();b.clear();}return 0;}


0 0
原创粉丝点击