最长公共子序列问题
http://poj.org/problem?id=1458
简单 经典DP
不是自己独立解决的。。。http://blog.csdn.net/yysdsyl/article/details/4226630
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#define PI acos(-1.0)
#define max(a,b) (a)>(b)? (a):(b)
#define min(a,b) (a)>(b)? (b):(a)
#define INT_MIN -0x7FFFFFFF
#define INT_MAX 0x7FFFFFFF
char str1[1000],str2[1000];
int f[1000][1000];
int main()
{
// freopen("in.txt","r",stdin);
int i,j,k,n;
while(scanf("%s%s",str1,str2)!=EOF)
{
memset(f,0,sizeof(f));
int la=strlen(str1);
int lb=strlen(str2);
for(i=0;i<la;i++)
{
for(j=0;j<lb;j++)
{
if(str1[i]==str2[j])
{
f[i+1][j+1]=f[i][j]+1;
}
else
{
f[i+1][j+1]=max(f[i+1][j],f[i][j+1]);
}
}
}
printf("%d\n",f[la][lb]);
}
return 0;
}