fzu Problem 2128 最长子串
来源:互联网 发布:it培训计划方案 编辑:程序博客网 时间:2024/05/19 03:17
Accept: 61 Submit: 252
Time Limit: 3000 mSec Memory Limit : 65536 KB
Problem Description
问题很简单,给你一个字符串s,问s的子串中不包含s1,s2...sn的最长串有多长。
Input
输入包含多组数据。第一行为字符串s,字符串s的长度1到10^6次方,第二行是字符串s不能包含的子串个数n,n<=1000。接下来n行字符串,长度不大于100。
字符串由小写的英文字符组成。
Output
最长子串的长度
Sample Input
lgcstraightlalongahisnstreet
5
str
long
tree
biginteger
ellipse
Sample Output
12
Source
福州大学第十届程序设计竞赛
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define N 1000005struct node{ int x,y;}a[N/10];int k,next[200];char str[N],s[200];bool cmp(node a,node b){ return a.x<b.x;}int min(int a,int b){ return a<b?a:b;}void NEXT(char *s,int n){ int i,j; j=-1; next[0]=-1; i=0; while(i<n) { if(j==-1||s[i]==s[j]) { i++;j++; next[i]=j; } else j=next[j]; }}void kmp(char *s,char *str){ int i,j,n1,n2,p; i=0;j=0; n1=strlen(str); n2=strlen(s); while(i<n1) { if(j==-1||str[i]==s[j]) { i++; j++; } else j=next[j]; if(j==n2) { //printf("i-1=%d\n",i-1); int len=i-n2; for(p=0;p<k;p++) { if(a[p].x==len) break; } if(p<k) a[p].y=min(a[p].y,n2); else { a[k].x=len; a[k++].y=n2; } j=next[j]; } }}int main(){ int i,n,len,b,max; while(scanf("%s",str)!=EOF) { k=0; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%s",s); len=strlen(s); NEXT(s,len); kmp(s,str); } if(k==0) printf("%d\n",strlen(str)); else { sort(a,a+k,cmp); //for(i=0;i<k;i++) //printf("x=%d y=%d\n",a[i].x,a[i].y); max=a[0].x+a[0].y-1; for(i=1;i<k;i++) { b=a[i].x+a[i].y-a[i-1].x-2; if(b>max) max=b; } b=len-1-a[k-1].x; if(b>max) max=b; printf("%d\n",max); } } return 0;}
0 0
- fzu Problem 2128 最长子串
- fzu Problem 2128 最长子串
- fzu Problem 2128 最长子串
- 【FZU】Problem 1411 最长配对子串
- FZU 2128 最长子串
- fzu 2128 最长子串
- fzu Problem 2128 最长子串 (注意strstr函数的使用)
- 福州大学第十届校赛 & fzu 2128最长子串
- Problem 2128 最长子串 (KMP+字符串 好题)
- fuzhuo------ Problem 1411 最长配对子串
- leetcode Problem 5 最长子回文串
- fzu——Problem 2088 最长队名
- fzu Problem 2129 子序列个数
- 【最长回文子串】【平衡树】[HDU5371]Hotaru's problem
- fzu—— Problem 2129 子序列个数
- fuz--2128(最长子串)
- 【CodeCraft比赛】Problem 7——X-man(最长公共子串LCS变种)
- 【面试笔试算法】Problem 9: 腾讯2016年研发实习笔试题:最长回文子串
- Android的 ViewPager 学习笔记
- fzu Problem 2127 养鸡场
- java中单例模式
- Leetcode - Array - Merge Sorted Array
- Singleton Pattern 单例模式
- fzu Problem 2128 最长子串
- XDOJ1013--时间工厂
- springAOP在实际开发中的作用
- 复杂指针的声明
- 堆排序
- HTTP请求头详解
- ym——对象序列化(新)
- fzu Problem 2129 子序列个数
- Leetcode【23】:Swap Nodes in Pairs