题目大意:有M个串,每个串的长度都是60,查找这M个串的最长公共子串(连续的),长度不能小于3,如果同等长度的有多个输出字典序最小的那个。
 
分析:因为串不多,而且比较短,所致直接暴力枚举的第一个串的所有子串,比较暴力的做法,如果串的长度大一些就没法玩了。
代码如下:
====================================================================================
 

  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. const int MAXN = ;
  5. const int oo = 1e9+;
  6.  
  7. char s[MAXN][MAXN];
  8. int next[MAXN];
  9.  
  10. void GetNext(char s[])
  11. {
  12. int i=, j=-, N=strlen(s);
  13. next[] = -;
  14.  
  15. while(i < N)
  16. {
  17. if(j==- || s[i]==s[j])
  18. next[++i] = ++j;
  19. else
  20. j = next[j];
  21. }
  22. }
  23. bool KMP(char a[], char s[])
  24. {
  25. int i=, j=;
  26. int Na=strlen(a), Ns = strlen(s);
  27.  
  28. while(i < Na)
  29. {
  30. while(j==- || (a[i]==s[j] && i<Na) )
  31. i++, j++;
  32.  
  33. if(j == Ns)return true;
  34.  
  35. j = next[j];
  36. }
  37.  
  38. return false;
  39. }
  40.  
  41. int main()
  42. {
  43. int T;
  44.  
  45. scanf("%d", &T);
  46.  
  47. while(T--)
  48. {
  49. int i, j, len, M, MaxLen=;
  50. char ans[MAXN] = "Z";
  51.  
  52. scanf("%d", &M);
  53.  
  54. for(i=; i<M; i++)
  55. scanf("%s", s[i]);
  56.  
  57. for(len=; len>=; len--)
  58. for(i=; i<=MaxLen-len; i++)
  59. {///枚举第一个串的所有子串
  60. char b[MAXN]={};
  61.  
  62. strncpy(b, s[]+i, len);
  63. GetNext(b);
  64.  
  65. for(j=; j<M; j++)
  66. {
  67. if(KMP(s[j], b) == false)
  68. break;
  69. }
  70.  
  71. if(j==M && strcmp(ans, b) > )
  72. strcpy(ans, b);
  73.  
  74. if(ans[] != 'Z' && i==MaxLen-len)
  75. i=, len = ;///跳出循环
  76. }
  77.  
  78. if(ans[] == 'Z')
  79. printf("no significant commonalities\n");
  80. else
  81. printf("%s\n", ans);
  82. }
  83.  
  84. return ;
  85. }

Blue Jeans - POJ 3080(多串的共同子串)的更多相关文章

  1. (字符串 KMP)Blue Jeans -- POJ -- 3080:

    链接: http://poj.org/problem?id=3080 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88230#probl ...

  2. Blue Jeans POJ 3080 寻找多个串的最长相同子串

    Description The Genographic Project is a research partnership between IBM and The National Geographi ...

  3. Match:Blue Jeans(POJ 3080)

    DNA序列 题目大意:给你m串字符串,要你找最长的相同的连续字串 这题暴力kmp即可,注意要按字典序排序,同时,是len<3才输出no significant commonalities #in ...

  4. Blue Jeans - poj 3080(后缀数组)

    大致题意: 给出n个长度为60的DNA基因(A腺嘌呤 G鸟嘌呤 T胸腺嘧啶 C胞嘧啶)序列,求出他们的最长公共子序列 使用后缀数组解决 #include<stdio.h> #include ...

  5. POJ 3080 Blue Jeans 找最长公共子串(暴力模拟+KMP匹配)

    Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20966   Accepted: 9279 Descr ...

  6. POJ 3080 Blue Jeans (求最长公共字符串)

    POJ 3080 Blue Jeans (求最长公共字符串) Description The Genographic Project is a research partnership between ...

  7. poj 3080 Blue Jeans

    点击打开链接 Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10243   Accepted: 434 ...

  8. POJ 3080 Blue Jeans (字符串处理暴力枚举)

    Blue Jeans  Time Limit: 1000MS        Memory Limit: 65536K Total Submissions: 21078        Accepted: ...

  9. POJ 3080 Blue Jeans(Java暴力)

    Blue Jeans [题目链接]Blue Jeans [题目类型]Java暴力 &题意: 就是求k个长度为60的字符串的最长连续公共子串,2<=k<=10 规定: 1. 最长公共 ...

随机推荐

  1. npm不能安装任何包,报错:npm WARN onload-script failed to require onload script npm-autoinit/autoinit及解决方法

    想要利用Hexo搭建一个博客,但是安装时npm一直报错,不仅仅是Hexo包,连别的其他包也不行,会提示下面的一堆错误 npm WARN onload-script failed to require ...

  2. Qt经典出错信息之”Basic XLib functionality test failed!”

    解决方法: 此完整出错信息是在./configure阶段Basic XLib functionality test failed!You might need to modify the includ ...

  3. 【BZOJ1036】【树链剖分】树的统计Count

    Description 一 棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. ...

  4. windows core audio apis

    这个播放流程有一次当初不是很理解,做个记录,代码中的中文部分,原文档是有解释的:To move a stream of rendering data through the endpoint buff ...

  5. workerman需要的php模块posix、pcntl、sysvshm、sysvmsg缺少,怎么办

    如果您的php是源码编译,那么请进到php的源码目录,再进入ext目录下,分别找到相应的php模块目录,进行编译 1. 假设php目录为/usr/local/php, 进到相应的php模块目录,执行 ...

  6. 每个Linux新手都应该记住的10个基本Linux命令

    Linux对我们的生活有着很大的影响.至少,你的安卓手机上面就有Linux内核.然而,头一次入手Linux只会让你觉得不适.因为在Linux上,你通常应该使用终端命令,而不是只要点击启动器图像(就像你 ...

  7. linux安装时提示发生不正常错误问题

    跳过md5系统较检(每个系统版本都有一个md5编码唯一) 在安装CentOS时 提示 找不到磁盘,是否安装程序,选择安装程序进行"下一步" 提示: 发生不规则,不正常错误 原因:没 ...

  8. php计算时间差/两个时间日期相隔的天数,时,分,秒.

    function timediff( $begin_time, $end_time ) { if ( $begin_time < $end_time ) { $starttime = $begi ...

  9. BTREE与HASH的区别

    对于 B-tree 和 hash 数据结构的理解能够有助于预测不同存储引擎下使用不同索引的查询性能的差异,尤其是那些允许你选择 B-tree 或者 hash 索引的内存存储引擎. B-Tree 索引的 ...

  10. Election Time

    Election Time Time Limit: 1000MS Memory limit: 65536K 题目描述 The cows are having their first election ...