长时间没有写动态规划的程序了,离开poj已有时日,貌似很久远的事了,称算法课程,把以前的复习一下,挑个软柿子吃一吃
#include<iostream>
#include<string>
#include<math.h>
#include<algorithm>
using namespace std;
const int N = 1000;
int dp[N][N];
#define max(a, b)(a>b ? a:b)
int LSC(string a, string b)
{
memset(dp, sizeof(dp), 0);
for(int i=1; i<=a.length(); i++)
{
for(int j=1; j<=b.length(); j++)
{
if(a[i-1] == b[j-1])
{
dp[i][j] = dp[i-1][j-1] + 1;
}
else
{
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
}
return dp[a.length()][b.length()];
}
void solve()
{
string a, b;
while( cin >> a >> b)
{
int ret = LSC(a, b);
cout << ret << endl;
}
}
int main()
{
solve();
return 0;
}