HDU 1159 Common Subsequence(最長公共子序列)
阿新 • • 發佈:2019-01-27
大概題意:給出兩個字串s1,s2,求他們的最長公共子序列長度...
大概算是模板題?
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cstdlib> #include<cmath> using namespace std; int dp[501][501]; char s1[501],s2[501]; int main() { while(scanf("%s %s",s1,s2)!=EOF) { memset(dp,0,sizeof(dp)); int n=strlen(s1); int m=strlen(s2); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(s1[i]==s2[j]) dp[i+1][j+1]=dp[i][j]+1;//因為怕i,j是0然後減1越界,所以就用i+1,j+1這樣的 else dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]); } } cout<<dp[n][m]<<endl; } return 0; }