标签:
#include <iostream> #include <stdio.h> #include <string.h> #include <cstring> #define cmax(a,b) (a)>(b)?(a):(b) //max()函数在库中没有,须自己定义! using namespace std; char a[1001],b[1001]; int cmap[1001][1001]; void dp() { for(int i=1;i<=strlen(a);++i) for(int j=1;j<=strlen(b);++j){ if(a[i-1]==b[j-1]) cmap[i][j]=cmap[i-1][j-1]+1; else cmap[i][j]=cmax(cmap[i-1][j],cmap[i][j-1]); } } int main() { //freopen("1.txt","r",stdin); while(scanf("%s %s",a,b)!=EOF) //写成&a,&b是错误的! { memset(cmap,0,sizeof(cmap)); dp(); int t=cmap[strlen(a)][strlen(b)]; printf("%d\n",t); } }
DP 动态规划 Problem B 1002 求最长上升子序列的长度
标签:
原文地址:http://blog.csdn.net/q1169917/article/details/51340681