HDU 1238字符串匹配

【代码超详解】HDU 1238 Substrings(暴力枚举 + KMP) 一、题目描述 二、算法分析说明与代码编写指导 KMP 算法 最多 10 个样例,每个样例最多 100 个字串,每个字串最大长度为 100,数据规模足够暴力匹配。 从短到长枚举任意一个字符串(这里取第一个)的全部子串,用这个子串去匹配其它字符串。匹配成功就把该子串的长度记为答案。注意在原子串匹配失败时,还要尝试用这个子串的反串去匹配。 头文件 algorithm 里面有比较方便的 std::cop... 阅读详情

Substrings

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11464 Accepted Submission(s): 5504

Problem Description
You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found as a substring of any of the given strings.

Input
The first line of the input file contains a single integer t (1 <= t <= 10), the number of test cases, followed by the input data for each test case. The first line of each test case contains a single integer n (1 <= n <= 100), the number of given strings, followed by n lines, each representing one string of minimum length 1 and maximum length 100. There is no extra white space before and after a string.

Output
There should be one line per test case containing the length of the largest string found.

Sample Input
2
3
ABCD
BCDFF
BRCD
2
rose
orchid

Sample Output
2
2

Author
Asia 2002, Tehran (Iran), Preliminary

题解

1、题意就是找出n个字符串中相同的子串的长度(逆子串也可以)。

2、思路:
- 找到n个字符串中最小长度字符串
- 将最小长度字符串不断循环减短与另外的字符串比较
- 主要理解以下几个函数
- strlen:求字符串长度
- strncpy:strncpy()原型: char * strncpy(char *dest, const char *src, size_t n);
- strstr:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
-
-

代码
#include <cstdio>
#include <cmath>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;

char s[101][101];
int m;
//反转
void rechange(char *str)
{
    int len;
    int j=0;
    char rs[101];
    len=strlen(str);
    for(int i=0;i<len;i++)
    {
        rs[j++]=str[len-i-1];
    }
    rs[j]='\0';
    strcpy(str,rs);
}
int GetStr(char *str)
{
    char p[101];//模拟子串
    char k[101];//模拟反转子串
    int len1,len2;
    int flag;
    len1=strlen(str);
    len2=strlen(str);
    while(len1>0)
    {
        for(int i=0;i<=len2-len1;i++)
        {
            /******/
            strncpy(p,str+i,len1);
            strncpy(k,str+i,len1);
            p[len1]='\0';
            k[len1]='\0';
            rechange(k);
            flag=1;
            for(int d=0;d<m;d++)
            {
                if(strstr(s[d],p)==NULL&&strstr(s[d],k)==NULL)
                {
                    flag=0;
                    break;
                }
            }
            if(flag==1)
            {
                return len1;
            }
        }
        len1--;
    }

}

int main()
{
    int n;
    char min_char[101];
    cin>>n;
    while(n--)
    {
        //int m;
        int min_length=100;
        cin>>m;
        for(int i=0;i<m;i++)
        {
            cin>>s[i];
            if(strlen(s[i])<min_length)
            {
                strcpy(min_char,s[i]);
                min_length=strlen(min_char);
            }
        }
        int sublen=GetStr(min_char);
        cout<<sublen<<endl;
    }
    return 0;
}
拓展KMP入门参考博客及例题汇集(更新中) 参考博客1 模板题 HDU 4300 这道题数据较小,似乎二分+暴力能过。 拓展KMP做法:假设原密文为zzzzzxxx(设原密文为字符串S),那么根据密码表转换后为xxxxx…(设转换后字符串为T)原密文的明文部分再次按密码表转换后无意义。这时,S:zzzzzxxx;T:xxxxx… 将S看作拓展KMP的母串,T看作子串,找出符合要求的明文即可。 代码 #include<iostream&... 阅读详情

相关推荐

别再踩坑了!CAPL脚本里局部变量和全局变量的那些“怪事”(附CANoe实测代码)

本文深度解析CAPL脚本中局部变量和全局变量的特殊机制,揭示其与通用编程语言的差异。通过实测代码展示静态局部变量的默认行为和全局变量的节点隔离特性,并提供高效避坑指南,帮助汽车网络测试工程师避免常见陷阱。

weixin_30225755的博客 293

HDU1238 最长公共子序列

这题是个搜索题。主要思想就是:首先,找到输入字符串中最短的串;然后,枚举其子串和子串的反串。这里求子串要从长度最大到最小,               因为要求的是最大子串。最后,判断枚举的子串是否是公共子串。若是,输出其长度,并结束;反之,继续求解。                       在做题过程中遇到的问题就是,把bool flag1=false,flag2=false写到了for

ON THE WAY TO GEEK 2167

AI算力瓶颈与系统优化实战指南

AI算力瓶颈已成为制约人工智能发展的关键因素,特别是在处理transformer类模型时,传统的冯·诺依曼架构面临严重的'内存墙'问题。通过硬件加速、系统优化和算法改进的三级策略,可以有效提升资源利用率。在嵌入式AI领域,结合量化、剪枝和专用指令集扩展等技术,能在资源受限设备上实现高效推理。这些优化方法在自动驾驶、工业视觉等场景中已展现出显著价值,推动AI应用从云端向边缘迁移。随着AI算力需求的持续增长,掌握系统优化技能将成为开发者的核心竞争力。

weixin_32597009的博客 340

hdu 1238(最长公共子序列变形)

1、http://acm.hdu.edu.cn/showproblem.php?pid=1238 2、题目大意: 给定n个字符串,求出最长的公共子序列,包括反转的也可以 本来觉得是动态规划解决,不过没对,后来看别人的代码,才发现其实就是一道暴搜的题目: 3、代码: #include #include #include using namespace std; string str[105

sdjzping的专栏 1821

拼多多爬虫实战:逆向sign与anti_content动态参数解析

现代电商爬虫已远超基础HTTP请求范畴,其核心在于理解服务端如何通过动态签名(sign)、设备指纹、行为验证等多维机制定义‘合法请求’。拼多多作为典型代表,将价格、销量、评价等关键数据完全剥离HTML,转由强校验API返回,依赖HMAC-SHA256嵌套签名、anti_content前端加密载荷及滑动验证token闭环。这类机制本质上是客户端环境可信度与请求上下文一致性的实时博弈,技术价值在于保障数据安全与业务风控。典型应用场景包括竞品价格监控、销量趋势分析、评价情感挖掘等需高保真数据的商业分析任务。本文聚

weixin_29741447的博客 833

MS1861宏晶微视频显示与控制器芯片:开发资料全解析与应用指南

本文全面解析了宏晶微MS1861视频显示与控制器芯片的核心功能与开发流程。该芯片作为高性能的“视频信号翻译官”,支持HDMI、LVDS等多种输入与MIPI、LVDS等输出,集成强大的图像处理与OSD叠加功能。文章详细介绍了从资料获取、环境搭建到以HDMI转MIPI为例的实战配置与调试技巧,为工业HMI、广告机等应用的开发者提供了完整的应用指南。

weixin_29198045的博客 337

hdu 1238 字符串的简单运用

#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define inf 0x3f3f3f3f #define eps 1e-10 #define maxl 3001

yellowjianokok的博客 398

Python-编写点云处理软件(二)点云软件ui制作之仿CC界面

至本篇结束,我们已经能够获得一个有点模子的界面了,但是具体的功能还没有编写,后续的文章将逐渐完善功能。

weixin_43894929的博客 3953

hdu 1238 找最长的公共字串

Substrings Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9132    Accepted Submission(s): 4310 Problem Description You are given a

Kunaly 605

边缘计算与产业生态系统

目录 文章目录目录边缘计算产业参与者边缘计算产业生态系统 边缘计算产业参与者 边缘计算领域参与者众多,主流公司以打造生态优势为目标,基于自身服务层级向产业链上下两端进行拓展,目前市场主要参与者有: 系统集成商:在产业头部,具有广泛的能力,可以集成不同生态系统公司的产品,具有一定的全球性属性,在边缘计算领域大多由云服务商、电信运营商担任。 云服务商:具有领先的云技术优势与应用生态体系,同时拥有全球性资源布局与市场资源生态,并渴望成为边缘计算主导者。 电信运营商:具有边缘基础设施优势,以及不可替代的

烟云的计算 2103

SAP中关于预测需求的重要载体:计划独立需求

预测,就是为了调节客户需求的波动、不平衡,使企业的生产计划、物料计划尽量平稳、有序的必备工具。计划独立需求,Planned Independent Requirement(PIR)是SAP系统中最常见的预测需求。

saplakes的博客 1879

hdu 1238 字符串匹配

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1238 最主要的是要求字符串的子串,反串,直接用string; View Code 1 #include 2 #include 3 #includestring> 4 using namespace std; 5 int n; 6 string s[111];

几百个教授的专栏 365

攻克反光难题!YOLOv9工业缺陷检测实战:高反光件、微小划痕精准识别(附抗反光代码+产线数据)

文章摘要:本文针对不锈钢、铝合金等高反光工业件的缺陷检测难题,提出了一套“硬件抗反光+YOLOv9小目标增强”的解决方案。通过分析反光干扰(镜面/漫反射)和微小划痕(0.1mm级)两大核心问题,详细介绍了500万像素工业相机+偏振光源的硬件配置方案,以及基于偏振图像融合和超分辨率放大的预处理方法。最终实现误检率1.2%、微小划痕检出率99.3%的工业级检测效果,并提供了可落地的代码实现和车间实测数据。(148字)

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1041

hdu 1238 Substrings(KMP)

题目链接:hdu 1238 Substrings 题目大意:给出若干个字符串,求一个最长的公共子串,该公共子串可以以逆序的形式存在在字符串中。 解题思路:枚举第一个串的开头做为匹配串,然后让该串和其他所有字符串求最长公共串的时候要去字符串正序和逆序中较大的。 #include #include #include using namespace std; c

不慌不忙、不急不躁 1332

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Substrings(hdu1238)字符串匹配

Substrings Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7205 Accepted Submission(s): 3255 Problem Description You are given a number of

寻找&星空の孩子 698

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HDU 1238 Substrings

题目链接:HDU1238 Substrings Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9192    Accepted Submission(s): 4353 Problem Description

teddywang 364

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

HDU-1238-Substrings(KMP, 暴力枚举)

链接: https://vjudge.net/problem/HDU-1238 题意: You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found a...

weixin_30294021的博客 199

HDU-2328-Corporate Identity(利用string函数)

博主链接 题目链接 题意: 给你n个字符串,问你这n个串的最长公共子串 题解: 题目和HDU-1238感觉差不多,暴力枚举任意一个字符串的所有子串,然后暴力匹配,这里用string解决的; 代码: #include&lt;stdio.h&gt; #include&lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; co...

Anoyer的博客 333

连续子序列的模板 stl

hdu1238 暴力搜 Substrings Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9122Accepted Submission(s): 4302 Problem Description You are...

weixin_30591551的博客 73

hdu1238Substrings

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1238 这题枚举子串和它的反串暴力就能过#include <stdio.h> #include<iostream> #include<cstring> #include<cstdlib> #include<cmath> using namespace std; char p[105][105]; cha

IDrandom的专栏 828

Substrings HDU - 1238 扩展kmp

题目链接在这:http://acm.hdu.edu.cn/showproblem.php?pid=1238 这个题目用扩展kmp可以轻易解决。 用第一个串的所有后缀去和剩下的串匹配,求出此后缀对于其他串的最小的公共长度,然后求所以后缀的最大的哪一个,记得翻转一下就行。 下面代码(码风有点丑) #include<cstdio> #include<cstring> #inclu...

天道酬勤 226

Substrings HDU - 1238 (kmp+暴力枚举)

Substrings HDU - 1238 You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found as a substring of an

codeswarrior的博客 407
上一篇: Servlet——开发Servlet三种方法详解
下一篇: HDU 2028最大公约数/最大公倍数
LinJie98
LinJie98 Apache 顶级项目 Flink中文文档翻译贡献者 Apache 顶级项目 Flink中文文档翻译贡献者
博客等级 码龄10年 5万+粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值