码迷,mamicode.com
首页 > 其他好文 > 详细

最长公共子串

时间:2019-01-27 13:04:14      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:子串   const   alt   namespace   lib   return   ==   二维   span   

技术分享图片利用二维数组进行求解

 1 ```
 2 /*求最长公共子串*/
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<cstdlib>
 7 using namespace std;
 8 const int maxn=10000;
 9 
10 
11 int main(){
12     int p1;//记录最长公共子串末位置
13     string arr1,arr2;//两个子串
14     getline(cin,arr1);
15     getline(cin,arr2);
16     int temp[arr1.length()][arr2.length()];//声明一个二维数组,存储最长公共子串长度
17     int length=0;//最长公子串长度
18     for(int i=0; i<arr1.length(); i++ ){
19         for(int j=0; j<arr2.length(); j++ ){
20             if(arr1[i]==arr2[j]){
21                 if(i>0&&j>0){
22                     temp[i][j]=temp[i-1][j-1]+1;
23                 }
24                 else{
25                     temp[i][j]=1;
26                 }
27                 if(temp[i][j]>length){//当前元素值大于公共子串长度
28                     length=temp[i][j];
29                     p1=i;
30                 }
31             }
32             else{
33                 temp[i][j]=0;
34             }
35         }
36     }
37     int k;
38     for(k=p1-length+1; k<=p1; k++ ){
39         cout<<arr1[k];
40     }
41     cout<<endl;
42     cout<<length<<endl;
43     return 0;
44 }
45 
46 ```

 

最长公共子串

标签:子串   const   alt   namespace   lib   return   ==   二维   span   

原文地址:https://www.cnblogs.com/Bravewtz/p/10325846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!