题目:http://poj.org/problem?id=3080

Sample Input

  1. 3
  2. 2
  3. GATACCAGATACCAGATACCAGATACCAGATACCAGATACCAGATACCAGATACCAGATA
  4. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  5. 3
  6. GATACCAGATACCAGATACCAGATACCAGATACCAGATACCAGATACCAGATACCAGATA
  7. GATACTAGATACTAGATACTAGATACTAAAGGAAAGGGAAAAGGGGAAAAAGGGGGAAAA
  8. GATACCAGATACCAGATACCAGATACCAAAGGAAAGGGAAAAGGGGAAAAAGGGGGAAAA
  9. 3
  10. CATCATCATCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  11. ACATCATCATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  12. AACATCATCATTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT

Sample Output

  1. no significant commonalities
  2. AGATAC
  3. CATCATCAT

  4. 题目要求:每组数据给你n个串,找出这n个串的最长的公共子串(子串必须是连续的)。如果存在多个最长的公共子串,输出字典序最小的
    那个。如果公共子串的长度<3的话,就输出指定那句话。
  5.  
  6. 1.strncpy(ans, s[0]+i, j-i+1 ); //挖串的函数,类似于C++的s.strsub(),无返回值
    参数:(被赋值串,提取串的起始地址, 提取的长度)
    2.strcmp(s, t); 比较两个串的大小,有返回值
    3.strstr(s, t); 查找t串在s串中的位置,如果不存在则返回NULL,否则返回第一个出现下标,有返回值
    4.strcpy(s, t); 赋值函数,无返回值
  7.  
  8. 代码:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5. #include <math.h>
  6. #include <iostream>
  7. #include <string>
  8. #include <algorithm>
  9.  
  10. using namespace std;
  11.  
  12. char p[11][61];//最多有10个串 每个串最长60
  13.  
  14. int main()
  15. {
  16. int tg; scanf("%d", &tg);
  17. int i, j, k;
  18. int n;
  19. while(tg--)
  20. {
  21. scanf("%d%*c", &n);
  22. for(i=0; i<n; i++)
  23. scanf("%s", p[i]);
  24. int len;
  25. char ans[61]="\0";
  26.  
  27. len=0;
  28. //枚举p[0]的每个子串
  29. int len0=strlen(p[0]);
  30. for(i=0; i<len0; i++){//枚举子串的起始位置
  31. for(j=i+2; j<len0; j++){//枚举子串的结束位置
  32. char cur[61];
  33. strncpy(cur, p[0]+i, j-i+1);//将该子串挖出来
  34. cur[j-i+1]='\0'; //最后一个位置赋值成'\0'才可以当字符串处理
  35.  
  36. bool flag=true;
  37. for(k=1; k<n; k++)
  38. {
  39. if(strstr(p[k], cur)==NULL ){
  40. flag=false; break;//
  41. }
  42. }
  43. if( flag==true && ( (j-i+1)>len || (j-i+1)==len &&strcmp(ans, cur)>0) )
  44. {
  45. len=j-i+1; strcpy(ans, cur);
  46. }
  47. }
  48. }
  49. if(len<3)
  50. printf("no significant commonalities\n");
  51. else
  52. printf("%s\n", ans );
  53. }
  54. return 0;
  55. }
  1.  

poj 3080 Blue Jeans【字符串处理+ 亮点是:字符串函数的使用】的更多相关文章

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

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

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

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

  3. POJ 3080 Blue Jeans (多个字符串的最长公共序列,暴力比较)

    题意:给出m个字符串,找出其中的最长公共子序列,如果相同长度的有多个,输出按字母排序中的第一个. 思路:数据小,因此枚举第一个字符串的所有子字符串s,再一个个比较,是否为其它字符串的字串.判断是否为字 ...

  4. POJ 3080 Blue Jeans(Java暴力)

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

  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

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

  7. poj 3080 Blue Jeans 解题报告

    题目链接:http://poj.org/problem?id=3080 该题属于字符串处理中的串模式匹配问题.题目要求我们:给出一个DNA碱基序列,输出最长的相同的碱基子序列.(保证在所有的序列中都有 ...

  8. POJ 3080 Blue Jeans(后缀数组+二分答案)

    [题目链接] http://poj.org/problem?id=3080 [题目大意] 求k个串的最长公共子串,如果存在多个则输出字典序最小,如果长度小于3则判断查找失败. [题解] 将所有字符串通 ...

  9. POJ 3080 Blue Jeans 后缀数组, 高度数组 难度:1

    题目 http://poj.org/problem?id=3080 题意 有m个(2<=m<=10)不包含空格的字符串,长度为60个字符,求所有字符串中都出现过的最长公共子序列,若该子序列 ...

随机推荐

  1. 现代 PHP 新特性系列

    生成器的创建和使用 http://laravelacademy.org/post/4317.html

  2. LINQ TO SQL 实现无限递归查询

    from:http://blog.csdn.net/q107770540/article/list 见论坛内有网友提问类似的问题已经不止一次了, 现总结一下,希望能给以后再碰到此类问题的朋友一些帮助  ...

  3. Linux下权限掩码umask

    一 权限掩码umask umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读( ...

  4. CodeIgniter框架——CI组件间信息流走向

    组件间信息流的走向图: 实线表示直接函数调用. 这些信息流可以从控制器到视图,也可以从控制器到类库或模型.(模型也能调用视图,但理论上这样做不合适.)相反方向就不能调用,如:视图不能调用控制器.然而, ...

  5. EF 批量更新删除(linq篇)

    刚开始用EF很多东西都不会用,事后想想都很简单的东西总是用很麻烦的方式实现 1:  EF的联合查询 inner join  很久很久以前我是这么写一个列表展示的,其中有两个字段Contractor和M ...

  6. 【转】.Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法

    阐述签名工具这个概念之前,我先说说它不是什么: 1.它不是用于给程序集加密的工具,它与阻止Reflector或ILSpy对程序集进行反编译一毛钱关系都没有. 2.它很讨厌人们把它和加密联系在一起. 我 ...

  7. 巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询

    1.编辑删除&&多对多关系的其他方法 提交,数据,得到结果 查看运行 给编辑和删除,添加样式 我们点击删除,可以成功删除 打印sql语句的,在settings.py里边的配置 LOGG ...

  8. 子单元通过 prop 接口与父单元进行了良好的解耦

    https://cn.vuejs.org/v2/guide/#起步 现在,我们可以使用 v-bind 指令将待办项传到循环输出的每个组件中: <div id="app-7"& ...

  9. 洛谷 P2523 [HAOI2011]Problem c

    洛谷1或洛谷2,它们是一样的题目,手动滑稽- 这一题我是想不出来, 但是我想吐槽一下坐我左边的大佬. 大佬做题的时候,只是想了几分钟,拍了拍大腿,干脆的道:"这不是很显然吗!" 然 ...

  10. 洛谷 P3263 [JLOI2015]有意义的字符串

    洛谷 首先,看到\((\frac{(b+\sqrt{d})}{2})^n\),很快能够想到一元二次方程的解\(\frac{-b\pm\sqrt{\Delta}}{2a}\). 所以可以推出,\(\fr ...