首页 > POJ 1458

POJ 1458

给出两个字符串,求它们最长的公共子字符串长度。

如abfgc  acbfefc

最长的公共子字符串为abfc   长度为4

思路:找到s1[i]与s2[j]的时候,相等的话,dp[i+1][j+1]=dp[i][j]+1;

    不等的话dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]);

 

 

#include

#include

#include

using namespace std;

int dp[300][300];

int main()

{   string s1,s2;

    while(cin>>s1>>s2){

      memset(dp,0,sizeof(dp));

      for(int i=0;i
          for(int j=0;j
              if(s1[i]==s2[j]){

                  dp[i+1][j+1]=dp[i][j]+1;

              }

              else {

                  dp[i+1][j+1]=dp[i][j+1];

                  if(dp[i+1][j]>dp[i][j+1])dp[i+1][j+1]=dp[i+1][j];

              }

          }

      }

      cout<
  }

    return 0;

}

转载于:https://www.cnblogs.com/Mr-Xu-JH/p/3850836.html

更多相关:

  • 题目:正则表达式匹配 请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均不匹配。 示例 1:...

  • 题意:就是在n*m的格子中放“炮”(中国象棋中的棋子)问有多少种放法,使得没有任意的两个炮相互攻击 思路:我们很容易的得到一列或者一行中最多放下两个炮(我也只能得到这些了,满脑子状压,但数据范围有100),这篇博客些的很好(传送门),我们定义dp[i][j][k]代表前i行我们有j列式有2个棋子,有k列是一个棋子,那么我们空的列的个数...

  • 虽然也是一道dp的入门题,但就是想不到,或者说不会实现。dp还是要多做题。 链接:https://www.luogu.org/problemnew/show/P1164   我们可以设dp[i][j]表示以考虑完第i件,恰好消费j元的方案数。那么dp[i][j]=dp[i-1][j]+dp[i-1][j-a[i]],也就是讨论第i件点...

  • bzoj1260,懒得复制,戳我戳我 Solution: 这种题目我不会做qwq,太菜了区间打牌(dp) 用f[l][r]表示从l到r最少需要染几次色。状态转移方程: 1.(f[l][r]=min(f[l][i],f[i+1][r]) (l<=i

  • 题目背景 博弈正在机房颓一个叫做《模拟城市2.0》的游戏。 2048年,经过不懈努力,博弈终于被组织委以重任,成为D市市委书记!他勤学好问,励精图治,很快把D市建设成富强民主文明和谐的美好城市。为了进一步深化发展,他决定在海边建立一个经济开发区。 题目描述 已知开发区的建筑地块是一个n×nn imes nn×n的矩形,而开发...