poj 1458 Common Subsequence 题目链接:http://poj.org/problem?id=1458
DP LCS
题目大意:求两串的最长公共子序列。
题目分析:无坑不拐弯,一般方法即可解决。
code:
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int i,j,dp[500][500];
string s1,s2;
while(cin>>s1>>s2)
{
memset(dp,0,sizeof(dp));
for(i=1;i<=s1.size();i++)
{
for(j=1;j<=s2.size();j++)
{
if(s1[i-1]==s2[j-1])dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
cout<<dp[s1.size()][s2.size()]<<endl;
}
return 0;
}
PS:一开始输出写成dp[s1.size()-1][s2.size()-1]…