C++练习 | 最长公共字符串(DP)
Posted tsj816523
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++练习 | 最长公共字符串(DP)相关的知识,希望对你有一定的参考价值。
HDU 1159.Common Subsequence
#include<iostream> #include<stdio.h> #include<string> #include<cstring> #include<string.h> using namespace std; int dp[10007][10007];//a的前i个字母与b的前j个字母的有序交集长度 int main() // freopen("01.in","r",stdin); string a,b; while(cin>>a>>b) int m=a.length(); int n=b.length(); dp[0][0]=0; for(int i=0;i<m;i++) for(int j=0;j<n;j++) if(a[i]==b[j]) if(j!=0&&i!=0) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=1; else if(j!=0&&i!=0) dp[i][j]=max(dp[i-1][j],dp[i][j-1]); else if(i==0) dp[i][j]=max(0,dp[i][j-1]); else dp[i][j]=max(0,dp[i-1][j]); cout<<dp[m-1][n-1]<<endl; return 0;
零点处理有些过于麻烦了,可以通过更改i,j初始值简化,但是懒得改了
不算太明白以后再看看
以上是关于C++练习 | 最长公共字符串(DP)的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode练习(Python):字符串类:第14题:最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。
Leetcode练习(Python):字符串类:第14题:最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。