POJ - 3080 Blue Jeans 字符串 暴力求最长公共连续子序列
时间:2019-01-17
本文章向大家介绍POJ - 3080 Blue Jeans 字符串 暴力求最长公共连续子序列,主要包括POJ - 3080 Blue Jeans 字符串 暴力求最长公共连续子序列使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题意:
给定一些字符串求最长公共连续子序列(子序列长度必须大于3),符合条件就输出这个连续子序列(如果存在多个长度相同的连续子序列就输出字典序最小的那个),否则就输出 no significant commonalities
思路:
按字符串长度从大到小暴力枚举第一个字符串的所有大于3的连续子序列,并检查其他字符串中是否含有这段连续子序列
这里需要用到几个函数:memcpy strstr strcmp strcpy
刚知道 puts() 中自带换行符。。。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[11][100];
char a[100]; //存放临时 连续最长子序列
char b[100]; //存放最长连续子序列
int main()
{
int m,n;
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%s",s[i]);
memset(b,0,sizeof(b)); //初始化为空字符串
int k,flag = 0;
for(int i=60;i>2;i--) //子串的长度
{
for(int j=0;j<61-i;j++) //子串的起始点
{
memset(a,0,sizeof(a)); //初始化为空字符串
memcpy(a,s[0]+j,i*sizeof(char)); // 将以s[0][j]为起点的i个字符复制给a
for(k=1;k<n;k++)
{
if( strstr(s[k],a)==NULL ) //检验s[k]中是否含有连续序列 a
break;
}
if(k==n) // 全部字符串中都含有连续序列 a
{
flag = 1;
if(b[0]=='\0') //第一次找到长度为 i 的连续子序列 直接复制
strcpy(b,a);
else //如果两连续子序列长度相同 把字典序小的复制给 b
{
if(strcmp(a,b)<0)
strcpy(b,a);
}
}
}
if(flag) //如果找到连续子序列就跳出循环
break;
}
if(!flag)
printf("no significant commonalities\n");
else
puts(b); // 自带换行符
}
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一路踩坑构建Dubbo源码
- vue引入echarts实现数据可视化
- 【七夕特殊礼物】Dubbo学习之SPI实战与debug源码
- Spring学习之浅析refresh()执行逻辑
- vue-lazyload实现图片懒加载
- Python教程之粒子运动轨迹动态绘图
- BFE.dev前端刷题11 - 什么是composition?实现一个pipe()方法
- SSH整合主要XML代码
- struts标签中的select
- 通过反射技术获取泛型真实实例
- 使用POI操作Excel
- StrutsResultSupport的使用
- QueryHelper插件类(hql)
- Action中使用Json
- Spring 集成Quartz