poj1226(kmp算法,后缀数组)
来源:互联网 发布:张龙 java 编辑:程序博客网 时间:2024/06/05 18:48
1.kmp解法
算法及流程请参考matrix67博文:http://www.matrix67.com/blog/tagscloud
时间关系先附代码,不解释
2.后缀数组(字符串处理的有力工具)
算法请参考byvoid的博文:http://www.byvoid.com/blog/lcs-suffix-array/
代码编辑中……
算法及流程请参考matrix67博文:http://www.matrix67.com/blog/tagscloud
时间关系先附代码,不解释
#include<iostream>#include<cstdio>#include<algorithm>#include<string>using namespace std;#define N 110int next[N]= {-1};string M[N],RM[N];//M[p].substr(s,e-s+1)为模式串//M[i],i<>p为主串bool kmp(string *M,int p,int k,int s,int e){ //!!!计算next[i+1] next[s]=s-1; int i,j; for(i=s,j=s-1; i<e;) { if(M[k][i+1]==M[k][j+1])next[++i]=++j; else { if(j!=s-1)j=next[j]; else next[++i]=s-1; } } //!!!匹配 for(i=-1,j=s-1; i!=M[p].size()-1&&j!=e;) { if(M[p][i+1]==M[k][j+1])i++,j++; else { if(j!=s-1)j=next[j]; else i++; } } //!!!匹配成功!!! return j==e;}int n;int p;int getAns(){ int len=M[p].size(); for(int i=len; i>0; i--) { for(int j=0; j+i-1<len; j++) { int k; for(k=0; k<n; k++) { if(k!=p) { if( !( kmp(M,k,p,j,i+j-1) || kmp(RM,k,p,j,i+j-1) ) )break; } } if(k==n)return i; } } return 0;}int main(){// freopen("data.in","r",stdin); int t; cin>>t; while(t--) { cin>>n; p=0; for(int i=0; i<n; i++) { cin>>M[i]; RM[i]=M[i]; reverse(RM[i].begin(),RM[i].end()); if(M[p].size()>M[i].size())p=i; } int ans=getAns(); reverse(M[p].begin(),M[p].end()); ans=max(ans,getAns()); cout<<ans<<endl; } return 0;}
2.后缀数组(字符串处理的有力工具)
算法请参考byvoid的博文:http://www.byvoid.com/blog/lcs-suffix-array/
代码编辑中……
- poj1226(kmp算法,后缀数组)
- poj1226 Substrings 后缀数组
- 后缀数组poj1226
- POJ1226:Substrings(后缀数组)
- kmp算法~poj1226示例
- Substrings poj1226 (后缀数组)
- POJ1226---Substrings(后缀数组+二分)
- [POJ1226]Substrings(后缀数组+二分)
- poj1226 KMP
- pku2406 kmp/后缀数组
- poj2406(kmp,后缀数组)
- KMP(后缀数组)uva11475
- poj1226 Substrings------KMP
- poj1226之kmp入门
- poj1226-kmp+枚举
- BZOJ 3796 后缀数组+KMP
- poj1226——Substrings//KMP
- 后缀数组 da算法
- 链表的选择排序
- 项目加班七宗罪
- 主键的选择
- 禁用cookie后,session还可以用吗
- 简单说说android的线程封装 zz .
- poj1226(kmp算法,后缀数组)
- pku2406 kmp/后缀数组
- C# 值类型 引用类型
- 链表冒泡排序
- Call to undefined function mysql_connect()
- JS文件中引用JS文件
- 一维小波变换算法程序目录
- pku1509 最小表示法/后缀数组
- DataAdapter的Fill方法