zoukankan      html  css  js  c++  java
  • 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 <iostream>
    #include <string>
    #include <string.h>
    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<s1.size();i++){
              for(int j=0;j<s2.size();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<<dp[s1.size()][s2.size()]<<endl;
      }
        return 0;
    }

  • 相关阅读:
    SDUT3926 kmp
    SDUT 3930 线段树
    HDU 3277 最大流+二分
    HDU 3081 最大流+二分
    HDU 3605 最大流+状态压缩
    HDU 3572 最大流
    HDU 4576 DP
    POJ 2289 最大流
    POJ 1698 最大流
    poj 3498 最大流
  • 原文地址:https://www.cnblogs.com/Mr-Xu-JH/p/3850836.html
Copyright © 2011-2022 走看看