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

C 题 KMP中next[]问题

时间:2014-07-27 22:50:49      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   for   问题   div   

题目大意:

找到能够进行字符串匹配的前缀

 

这题只要一直求next,直到next为0停止,记得答案是总长减去next的长度

 

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #include<string>
 4 using namespace std;
 5 
 6 #define N 1000100
 7 int a[N],b[N],next[N];
 8 int m;
 9 void getNext(){
10     next[0]=0;
11     next[1]=0;
12     for(int i=1;i<m;i++){
13         int j=next[i];
14         while(b[j]!=b[i]&&j) j=next[j];
15         if(b[j]==b[i]) next[i+1]=j+1;
16         else next[i+1]=0;
17     }
18 }
19 
20 int main()
21 {
22     int T,count;
23     cin>>T;
24     string s;
25     for(int i=1;i<=T;i++){
26         cin>>s;
27         m=s.length(),count=0;
28         int t=m;
29         for(int k=0;k<m;k++) b[k]=s.at(k);
30         getNext();
31         //a[count++]=m;
32 
33         while(next[m])
34         {
35             a[count++]=t-next[m];
36             m=next[m];
37         }
38         cout<<"Case #"<<i<<": "<<count+1<<endl;
39         for(int i=0;i<count;i++) cout<<a[i]<< ;
40         cout<<t<<endl;
41     }
42     return 0;
43 }

 

C 题 KMP中next[]问题,布布扣,bubuko.com

C 题 KMP中next[]问题

标签:style   blog   color   os   io   for   问题   div   

原文地址:http://www.cnblogs.com/CSU3901130321/p/3871697.html

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