题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159
#include <iostream> #include <string.h> using namespace std; /**************************************************************************************************************** 题意:给定两个字符串,找出最大公共字串 思路: 1,dp[i][j] : s1串长度为i,s2长度为j时的最大公共字串长度 2,dp[i][j]=max(dp[i-1][j],dp[i][j-1]) ****************************************************************************************************************/ string s1,s2; int dp[1050][1050]; int main() { while(cin>>s1>>s2) { for(int i = 0;i < s1.size();i ++) dp[i][0]=0; for(int i = 0;i < s2.size();i ++) dp[0][i]=0; for(int i = 1;i <= s1.size();i ++){ for(int j = 1;j <= s2.size();j ++){ if(s1[i-1] == s2[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } cout<<dp[s1.size()][s2.size()]<<endl; } return 0; }