POJ 题目3450 Corporate Identity(KMP 暴力)
来源:互联网 发布:unity for linux 编辑:程序博客网 时间:2024/05/29 17:44
Description
Beside other services, ACM helps companies to clearly state their “corporate identity”, which includes company logo but also other signs, like trademarks. One of such companies is Internet Building Masters (IBM), which has recently asked ACM for a help with their new identity. IBM do not want to change their existing logos and trademarks completely, because their customers are used to the old ones. Therefore, ACM will only change existing trademarks instead of creating new ones.
After several other proposals, it was decided to take all existing trademarks and find the longest common sequence of letters that is contained in all of them. This sequence will be graphically emphasized to form a new logo. Then, the old trademarks may still be used while showing the new identity.
Your task is to find such a sequence.
Input
The input contains several tasks. Each task begins with a line containing a positive integer N, the number of trademarks (2 ≤ N ≤ 4000). The number is followed by N lines, each containing one trademark. Trademarks will be composed only from lowercase letters, the length of each trademark will be at least 1 and at most 200 characters.
After the last trademark, the next task begins. The last task is followed by a line containing zero.
Output
For each task, output a single line containing the longest string contained as a substring in all trademarks. If there are several strings of the same length, print the one that is lexicographically smallest. If there is no such non-empty string, output the words “IDENTITY LOST” instead.
Sample Input
3aabbaabbabbababbbbbbbabb2xyzabc0
Sample Output
abbIDENTITY LOST
Source
CTU Open 2007
#include<stdio.h>#include<string.h>char str[4040][220];int next[4040];void getnext(char *s){int len=strlen(s);int j=0,k=-1;next[0]=-1;while(j<=len){if(k==-1||s[k]==s[j]){k++;j++;next[j]=k;}elsek=next[k];}}int kmp(char *a,char *b){int i,j;i=j=0;int n=strlen(a);int m=strlen(b);getnext(b);while(i<n){if(j==-1||a[i]==b[j]){i++;j++;}elsej=next[j];if(j==m)return 1;}return 0;}int main(){int n;while(scanf("%d",&n),n){int i,j,k;for(i=0;i<n;i++){scanf("%s",str[i]);}int len=strlen(str[0]);char temp[220],ans[220]="";for(i=0;i<len;i++){int cnt=0;for(j=i;j<len;j++){temp[cnt++]=str[0][j];temp[cnt]='\0';//getnext(temp);int flag=0;for(k=1;k<n;k++){if(!kmp(str[k],temp)){flag=1;break;}}if(!flag){if(strlen(temp)>strlen(ans)||(strlen(temp)==strlen(ans)&&strcmp(temp,ans)<0))memcpy(ans,temp,sizeof(temp));}}}if(strlen(ans)==0)printf("IDENTITY LOST\n");elseprintf("%s\n",ans);}}
- POJ 题目3450 Corporate Identity(KMP 暴力)
- 【poj 3450 Corporate Identity 】 KMP(暴力)
- [KMP或者暴力]POJ 3450 Corporate Identity
- POJ 3450 Corporate Identity 暴力枚举+KMP
- POJ 3450Corporate Identity(暴力枚举+KMP)
- poj 3450 Corporate Identity 【暴力KMP】
- poj 3450 Corporate Identity(二分长度 + 暴力kmp)
- POJ-3450-Corporate Identity(KMP)
- HDU 2328 Corporate Identity (暴力 | kmp)
- Corporate Identity (KMP+暴力枚举)
- POJ 3450 Corporate Identity (KMP+暴搞)
- poj Corporate Identity 3450 (KMP&&枚举) 好题
- POJ-3450 Corporate Identity(KMP/后缀数组)
- POJ 3450 Corporate Identity KMP题解
- poj 3450 Corporate Identity(数据结构:KMP)
- POJ 3450--Corporate Identity【KMP && 枚举】
- poj 3450 Corporate Identity
- POJ-3450-Corporate Identity
- theano学习2MLP
- windows下使用makefile
- Tomcat的Admin和Manager工具初探
- php学习笔记之动态生成一组单选按钮
- Android 反编译资料整理
- POJ 题目3450 Corporate Identity(KMP 暴力)
- windows上搭建sublime cpp运行环境
- map和对象之间的转换
- 智力题(第三集)
- sicily 1012/1206 Stacking Cylinders
- GraphMatrix::图的定义
- 多个tomcat 共享一个应用程序目录
- 单例模式
- 对象构成模型