程序地带

(字符串)简单/查找最长公共子序列


题目链接

POJ 3080 Blue Jeans


题目大意

就是找几个字符串中的最长的公共子序列,比较简单,可以暴力求解


思路

从第一个字符串中一次选取字符串(长度从1到60),然后与后面几组相比较


代码
#include <iostream>
#include <queue>
#include <fstream>
#include <string.h>
#include <string>
#include <stack>
using namespace std;
int main()
{
// ifstream fin("data.txt");
char s[11][66];
int N;
// fin>>N;
cin>>N;
while(N--)
{
int n;
//fin>>n;
cin>>n;
for(int i=0; i<n; i++)
//fin>>s[i];
cin>>s[i];
char ans[66];
int len = 1;
int maxlen = 0;
int start=0;
while(1)
{
//从1选字符串截取的长度
char tmp[66];
int tt = start;
if(tt+len>60) //1选完了之后是2
{
len++;
start=0;
if(len>60)
break;
continue;
}
int j;
for(j=0; j<len; j++)
tmp[j] = s[0][tt++];
tmp[j]='';
int ff=1;
for(int k=1; k<n; k++) //将第一个串中的数据与之后的比较
{
if(!strstr(s[k],tmp))
{
ff=0;
break;
}
}
if(ff==1)
{
if(maxlen < len)
{
maxlen = len;
strcpy(ans,tmp);
}
if(maxlen == len)
{
if(strcmp(ans,tmp)>0)
strcpy(ans,tmp);
}
}
start++;
}
if(maxlen<3)
cout<<"no significant commonalities"<<endl;
else
cout<<ans<<endl;
}
return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45797295/article/details/109757270

随机推荐

Collecting stars

题目链接:Collectingstars首先答案一定是一段连续的区间。然后我们可以发现从s开始,我们如果只单向走一定是连续的。如果我们需要两边都到达的话,第一...

青烟绕指柔! 阅读(333)

秒数转年月日时分秒

话不多说,直接复制拿去用即可(传一个数字类型的就行)functiontransfer_time(value){letsecondTime=parseI...

Odl Dragon 阅读(513)

Django基础篇--上下文处理器和前端代码复用

一、上下文管理器在views中重复使用的代码,可以通过上下文管理器(在setting.py文件中的TEMPLATES中配置)中实现,减少代码冗余上下文管理器的处理流程如下:先走完views里面的代码,...

gengjuan_sunny 阅读(102)

Tensorflow基础(1)---Tensorflow2.0特性

**谷歌公司对Tensorflow的定义:**Anend-to-endopensourcemachinelearningplatform。一个端到端的开源机器学习平台1.发展历程2011...

王YuHao 阅读(237)

什么是 SurfaceView?

Surface简介Surface就是“表面”的意思,可以简单理解为内存中的一段绘图缓冲区。在SDK的文档中,对Surface的描述是这样的:“Handleon...

对话~ 阅读(562)

vue -深度监听

vue-深度监听问题产生的原因:今天在写uniapp时,Vue监听不到数组的对象值得修改,当修改变量的属性时,双向绑定不会重新渲染一遍;解决1:在各种论坛查找后无果,我试着...

大碗米饭 阅读(824)