简单的纯粹的动态规划思想,直接上代码:
#include
#include
#include
using std::cout;
using std::endl;
using std::string;
std::ifstream cin("dp_lcs.in");
char a[5000], b[5000];
int dp_lcs(const char* a, int a_len, const char* b, int b_len)
{
if(a_len == 0 || b_len == 0)
{
return 0;
}
if(a[a_len - 1] == b[b_len - 1])
{
return dp_lcs(a, a_len - 1, b, b_len - 1) + 1;
}
else
{
int ix = dp_lcs(a, a_len - 1, b, b_len);
int iy = dp_lcs(a, a_len, b, b_len - 1);
return (ix > iy) ? ix : iy;
}
}
int main(int argc, char* argv[])
{
//cin >> a >> b;
memset(a, 'a', sizeof(a));
memset(b, 'a', sizeof(b));
cout << dp_lcs(a, strlen(a), b, strlen(b)) << endl;
return 0;
}