2017-09-02 17:07:42

writer:pprp

通过这个题温习了一下刚学的LCS

代码如下:

/*
@theme:hdu1159
@writer:pprp
@begin:17:01
@end:17:06
@declare:LCS的裸题,温习一下
@error:从1开始读入的话,用strlen也要从1开始测才可以
@date:2017/9/2
*/

#include <bits/stdc++.h>

using namespace std;

char s1[1010],s2[1010];
int dp[1010][1010];
int main()
{

    //freopen("in.txt","r",stdin);
    while(~scanf("%s%s",s1+1,s2+1))
    {
        memset(dp,0,sizeof(dp));
        int n = strlen(s1+1);
        int m = strlen(s2+1);

        for(int i = 1; i <= n ;i++)
        {
            for(int j = 1; j <= m ; j++)
            {
                if(s1[i] == s2[j])
                    dp[i][j] = dp[i-1][j-1] + 1;
                else
                    dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
            }
        }
        cout << dp[n][m] << endl;
    }

    return 0;
}

 

代码改变世界