题意:给出m个字符串,找出其中的最长公共子序列,如果相同长度的有多个,输出按字母排序中的第一个。

思路:数据小,因此枚举第一个字符串的所有子字符串s,再一个个比较,是否为其它字符串的字串。判断是否为字串的时候,将s的字符依次与其他字符串的字符比较。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <algorithm>using namespace std;
const int maxm=15;
const int maxlen=65;
char str[maxm][maxlen]; //存储m个字符串
char s[maxlen],ans[maxlen]; //s存储枚举str[0]的子字符串,ans存储m个字符串序列的最长公共序列
int n,m;
int len; //枚举子字符串的长度//判断s是否为str[i]的子字符串
bool common(int i){int flag;for(int j=0;j+len<=60;j++){flag=1;for(int k=0;k<len;k++){if(str[i][j+k]!=s[k]){flag=0;break;}}if(flag)return 1;}return 0;
}
//判断子字符串是否为str[1]~str[m]的子字符串
bool isOk(){for(int i=1;i<m;i++){if(!common(i)){return 0;}}return 1;
}
int main()
{scanf("%d",&n);while(n--){int maxl=0;scanf("%d",&m);for(int i=0;i<m;i++)scanf("%s",str[i]);for(len=3;len<=60;len++){for(int i=0;i+len-1<60;i++){strncpy(s,str[0]+i,len); //将str[0]的前len个字符拷贝到s中去s[len]='\0';if(isOk()){if(len>maxl){maxl=len;strcpy(ans,s);}//如果长度相同,但s的顺序在ans前,则改变ans值else if(len==maxl && strcmp(s,ans)<0){strcpy(ans,s);}}}}if(maxl==0)printf("no significant commonalities\n");else{printf("%s\n",ans);}}return 0;
}

转载于:https://www.cnblogs.com/chenxiwenruo/p/3333604.html

POJ 3080 Blue Jeans (多个字符串的最长公共序列,暴力比较)相关推荐

  1. POJ 3080 Blue Jeans (KMP)

    链接:http://poj.org/problem?id=3080 题目: Description The Genographic Project is a research partnership ...

  2. POJ - 3080 Blue Jeans(暴力+KMP)

    题目链接:点击查看 题目大意:给出n组长度为60的字符串,问这n组中最长的公共连续子串是什么,若有多个不同的最长公共子串,输出字典序最小的那个 题目分析:一开始看到这个题目的时候我是没有想到暴力的.. ...

  3. poj 3080 Blue Jeans

    #include <iostream> //KMP+枚举#include<string>using namespace std;#define len 60char str[1 ...

  4. POJ 3080 Blue Jeans (后缀数组)

    题目大意: 求出这些DNA序列中的最长且字典序最小的公共子串. 思路分析: 二分长度的答案,去height中扫描这个长度是否满足,一旦满足就立即输出.这样就能够保证字典序最小了. #include & ...

  5. POJ 3080 - Blue Jeans

    题意: 求所有串的最长公共子串,若有多个输出字典序最小的 分析: 对第一个串的每一个后缀分别与剩下的所有串进行匹配,求得公共子串 对每一个公共子串,记录下最大值即可. 1 #include <i ...

  6. 求两个字符串的最长公共字串(连续)

    题目描述: 输入两个字符串,求其的最长的公共的字串,这与最长公共子序列不一样 输出两字符串的最长公共字串 思路一: 从字符串A开始遍历,同时遍历字符串A,找到第一个与当前字符串A相同的字符,此时记下当 ...

  7. python查找最长公共前缀_Python实现查找字符串数组最长公共前缀示例

    本文实例讲述了Python实现查找字符串数组最长公共前缀.分享给大家供大家参考,具体如下: 编写一个函数来查找字符串数组中的最长公共前缀. class Solution: def longestCom ...

  8. 两个字符串的最长公共子序列长度_【面试】动态规划-之最长公共子序列、最长公共子串问题...

    先来说明下什么是最长公共子序列,什么是是最长公共子串,举一个实际例子,myblogs与belong,最长公共子序列为blog(myblogs, belong),最长公共子串为lo(myblogs, b ...

  9. java两个字符串前缀_java – 找到两个字符串的最长公共前缀

    我想找到两个字符串的最长公共前缀. 有没有办法循环我的最后几个if语句,以便我可以结束彼此不匹配的最后几个字符? System.out.println("Enter the first st ...

最新文章

  1. Python 的基本数据类型
  2. AR、美颜、机器人:计算机视觉库几乎无所不在
  3. vue 箭头函数兼容性_前端学习计划之VUE学习(二)
  4. C++ int转string
  5. linux 敏感标记 权限,闲话Linux系统安全(二)——强制访问控制(MAC)
  6. Python 之父重回决策层,未来如何发展?
  7. Socket基础知识分享
  8. ArcGIS水文分析实战教程(10)河流平均比降计算
  9. Java开发过程中需要注意的技巧有哪些?
  10. 【并查集】并查集专题总结
  11. tomcat 多实例的Sys V风格脚本
  12. 安装flash player提示版本不是最新,无法安装
  13. 最优化算法之鲍威尔算法(java)
  14. html5接收表单,HTML5表单的新功能
  15. Qt 实现 QQ 截图工具(开源OEasyScreenshot)
  16. 计算机如何寻找ppt文件,如何快速找到电脑里的文件ppt课件
  17. apk破解(二) 简单修改一个so文件
  18. Vscode关闭自动更新
  19. 微信小程序使用云函数实现客户下单后商家小程序接收订单状态通知(通过发送统一服务消息uniformMessage.send实现)
  20. 我有一个还在蹒跚学步的小孩是否应该学习Python?

热门文章

  1. centos6.5 做路由器
  2. 五、oracle 表的管理
  3. 更改chrome临时目录(可举一反三)
  4. 分享30个最佳 jQuery Lightbox 效果插件
  5. android fitsSystemWindows的使用
  6. 【android】静态链接器/加载器(ld) 动态加载器(/system/bin/linker)+动态加载接口(dlopen)
  7. define 解析依赖,判断状态,初始化/触发加载 --------require 同步加载(直接返回)/异步加载(创建匿名模块,判断状态,初始化/触发加载)
  8. 【Redis】7.使用jedis操作redis数据库
  9. DatePickerDialog 简单用法
  10. 结构型模式—享元模式