hdu 1159(lcs)

就是板子,没什么可说的,我就再来回顾一下,看有什么新收获,所谓dp,就是带入前面数据的分段处理

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=1000+10;
int dp[maxn][maxn];
string a,b;
int main()
{
      while(cin >> a >> b)
      {
          memset(dp,0,sizeof(dp));
          for(int i=0;i<a.length();i++)
             for(int j=0;j<b.length();j++)
          {
              if(a[i]==b[j]) dp[i+1][j+1]=dp[i][j]+1;//这里的dp[i+1][j+1]对应a[i]和b[i],不用dp[i][j]对应,因为不存在dp[-1][-1]=0
              else dp[i+1][j+1]=max(dp[i+1][j],dp[i][j+1]);
          }
          printf("%d\n",dp[a.length()][b.length()]);

      }
    return 0;
}

 

posted on 2017-08-14 16:34  发牌员  阅读(91)  评论(0编辑  收藏  举报

导航