【C++】每周一题——2024.3.3

题目

Cpp
【问题描述】
字符环(来源:NOI题库)。有两个由字符构成的环,请写一个程序,计算这两个字符环上最长公共字符串的长度。例如,字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环;字符串”MADJKLUVKL”的首尾连在一起,构成另一个环;“UVKLMA”是这两个环的一个公共字符串。
【输入格式】
有两行,每行一个不包含空格的字符串,每行的字符串首尾相连即为一个环。
【输出格式】
一行,输出一个整数,表示这两个字符环上最长公共字符串的长度。
【输入样例】
ABCEFAGADEGKABUVKLM MADJKLUVKL
【输出样例】
6
【数据范围】
字符串长度不超过255


分析

就是找两个字符串的最大的连续交集。只不过字符串首尾相连


思路

其实要考虑的只不过是最后一位的下一位是第一位而已。这也很简单,直接将该字符串复制一份接到它后面即可。然后就可以循环找子集了。


代码

  1. 框架

    int main(){return 0;
    }
    

  2. 输入字符串

    #include<cstdio>	//scanf()
    char a[256], b[256]; 
    int main(){scanf("%s %s", &a, &b);return 0;
    }
    

  3. 拼接字符串
    注意,不能直接用strcat()函数拼接!

    #include<cstdio>	//scanf()
    #include<cstring>	//strcpy(), strcat(), memset()
    char a[256], b[256], c[256];
    int main(){scanf("%s %s", &a, &b);strcpy(c, a);strcat(a, c);memset(c, 0, sizeof(c));strcpy(c, b);strcat(b, c);return 0;
    }
    

  4. 遍历字符串a的子集(遍历头和尾,并同时求出子集)。详见该文张2.5版解题思路

    #include<cstdio>	//scanf()
    #include<cstring>	//strcpy(), strcat(), memset(), strlen()
    char a[256], b[256], c[256];
    int l;
    int main(){scanf("%s %s", &a, &b);strcpy(c, a);strcat(a, c);memset(c, 0, sizeof(c));strcpy(c, b);strcat(b, c);l=strlen(a);for(int i=0; i<l; i++){memset(c, 0, sizeof(c));for(int j=0; j<l-i; j++){c[j]=a[i+j];}}return 0;
    }
    

  5. 已经求出了一个字符串的子集,现在直接判断该子集是否同时存在于另一个字符串中。如果存在,就将该子集的长度比较存入变量中。

    #include<cstdio>	//scanf()
    #include<cstring>	//strcpy(), strcat(), memset(), strlen(), strstr()
    #include<cmath>		//fmax()
    char a[256], b[256], c[256];
    int l, ans;
    int main(){scanf("%s %s", &a, &b);strcpy(c, a);strcat(a, c);memset(c, 0, sizeof(c));strcpy(c, b);strcat(b, c);l=strlen(a);for(int i=0; i<l; i++){memset(c, 0, sizeof(c));for(int j=0; j<l-i; j++){c[j]=a[i+j];if(strstr(b, c)!=NULL){ans=fmax(ans, j+1);}}}return 0;
    }
    

  6. 最后,输出变量即可。

    #include<cstdio>	//scanf(), printf()
    #include<cstring>	//strcpy(), strcat(), memset(), strlen(), strstr()
    #include<cmath>		//fmax()
    char a[256], b[256], c[256];
    int l, ans;
    int main(){scanf("%s %s", &a, &b);strcpy(c, a);strcat(a, c);memset(c, 0, sizeof(c));strcpy(c, b);strcat(b, c);l=strlen(a);for(int i=0; i<l; i++){memset(c, 0, sizeof(c));for(int j=0; j<l-i; j++){c[j]=a[i+j];if(strstr(b, c)!=NULL){ans=fmax(ans, j+1);}}}printf("%d", ans);return 0;
    }
    


答案

#include<cstdio>
#include<cstring>
#include<cmath>
char a[256], b[256], c[256];
int l, ans;
int main(){scanf("%s %s", &a, &b);strcpy(c, a);strcat(a, c);memset(c, 0, sizeof(c));strcpy(c, b);strcat(b, c);l=strlen(a);for(int i=0; i<l; i++){memset(c, 0, sizeof(c));for(int j=0; j<l-i; j++){c[j]=a[i+j];if(strstr(b, c)!=NULL){ans=fmax(ans, j+1);}}}printf("%d", ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/717712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s常见的命令集锦

Kubernetes&#xff08;K8s&#xff09;是一个开源的容器编排系统&#xff0c;它提供了一系列的命令行工具 kubectl 来管理和操作集群中的资源。以下是一些常见的 kubectl 命令集锦&#xff1a; kubectl get&#xff1a;用于获取集群中的资源对象信息&#xff0c;如pods、nodes…

112.路径总和

// 定义一个名为 Solution 的类 class Solution {// 定义一个名为 hasPathSum 的公共方法&#xff0c;接收一个 TreeNode 类型的根节点 root 和一个整数 targetSum 作为参数// 方法返回一个布尔值&#xff0c;表示从根节点开始是否存在一条路径&#xff0c;使得路径上所有节点的…

18个惊艳的可视化大屏(第12辑):智慧校园与教育方向

智慧校园可视化大屏通过数据可视化技术&#xff0c;将学校各个方面的数据信息进行展示&#xff0c;可以提高信息公开透明度、优化校园管理、提高学生教育质量和提高校内活动宣传效果等。 1提高信息公开透明度&#xff1a; 通过大屏幕展示校园各个方面的数据信息&#xff0c;可…

mysql 字符串的拆分之 substring_index()函数

语法 substring_index(string,delimiter,number) string &#xff1a; 要分隔的字符串。 delimiter &#xff1a; 分隔符 number &#xff1a;分隔符位置 注意 number 可以为正数&#xff0c;也可以为负数。 正数时是指的是从左向右数&#xff0c;第 number 个分隔符左…

大唐杯学习笔记:Day3

1.1 SA组网和NSA组网 SA组网(非独立组网)是指使能5G网络不需要其他移动通信系统的辅助,可以独立进行工作。NSA组网(独立组网)是指使能5G网络需要其他移动通信系统的辅助,如果辅助缺失,那么5G网络不可以独立进行工作,通常而言5G网络建设阶段,NSA组网方式是在表明5G网络的使用需…

奔跑吧,前端er!前端五大方向技能罗列,webGL、AI、桌面、游戏

经常看到头条上前端们争论各种框架的优劣&#xff0c;然后相互争吵不休&#xff0c;其实技术也好&#xff0c;框架也好&#xff0c;都是服务于项目需求的&#xff0c;争论的铁子们都站在自己的项目角度来品评工具&#xff0c;肯定是公说公有理婆说婆有理啦。 技术和框架是中性的…

编程之美_目录

编程之美 0&#xff09;0_0_常用函数库 0&#xff09;0_1_测试函数总结 1&#xff09;1.1 数据结构之 数组 2&#xff09;1.2 数据结构之 字符串 3&#xff09;1.3 数据结构之 链表 4&#xff09;1.4 数据结构之 队列 5&#xff09;1.5 数据结构之 栈 5&#xff09;1.6 …

【latex】\IEEEpubid版权声明与正文内容重叠

问题描述 撰写IEEE Trans论文时&#xff0c;出现版权声明文字\IEEEpubid与正文内容重叠的问题&#xff1a; 原因分析&#xff1a; 在使用模板时&#xff0c;不小心将以下命令删除了&#xff1a; \IEEEpubidadjcol 解决方案&#xff1a; 在需要换页的位置附近添加以上命令&…

在Jupyter-lab中使用RDKit画分子2D图

在Jupyter-lab中使用RDKit画分子2D图 在做完分子对接后&#xff0c;想看看筛选后的分子的结构。因此想利用Jupyter-lab来画分子的2D图。 1. 安装Jupyter-lab与RDKit 系统&#xff1a;Win11已安装conda RDKit 是一个功能强大、灵活易用的化学信息学工具包&#xff0c;广泛应…

w30使用python调用shell脚本

使用python脚本去实现永恒之蓝漏洞攻击 实验环境 攻击工具&#xff1a;pythonmsfconsole 靶场&#xff1a;win7 和 kali实验目的 演示python脚本调用过程 实验步骤 1.写一个永恒之蓝的攻击脚本&#xff0c;定义为blue.rc use exploit/windows/smb/ms17_010_eternalblue …

Spark(2)-基础tranform算子(一)

一、算子列表 编号名称1map算子2flatMap算子3filter算子4mapPartitions算子5mapPartitionsWithIndex算子6keys算子7values算子8mapValues算子9flatMaplValues算子10union算子11reducedByKey算子12combineByKey算子13groupByKey算子14foldByKey算子15aggregateByKey算子16Shuff…

深度学习工具之tokens计算器

1.什么是Token Token是GPT处理文本的基本单位。Token可以是一个字、一个词语或特定语言中的一个字符。它们负责将输入的文本数据转换为 GPT 可以处理的数据格式。每个 GPT 模型都有一个预设的最大 Tokens 数量&#xff0c;例如&#xff0c;GPT-3 每次调用允许处理的最大 Token…

韦东山嵌入式Liunx入门驱动开发五

文章目录 一、驱动程序基石1-1 休眠与唤醒1-2 POLL机制1-3 异步通知(1) 异步通知程序解析(2) 异步通知机制内核代码详解 1-4 阻塞与非阻塞1-5 定时器(1) 内核函数(2) 定时器时间单位 1-6 中断下半部 tasklet 本人学习完韦老师的视频&#xff0c;因此来复习巩固&#xff0c;写以…

华为OD技术面试案例7-2024年

记录一下我面试od的面试过程. 1、第一个是hr电话面试, 其实也就是od的hr致电, 简单了解一下个人情况, 问我要一些个人信息, 这块没啥问题; 2、第二个就是机考了, 根据我提供的信息, od的hr给我发了一个机考的链接, 并告诉我7天内有效, 可以在考试之前先刷刷题, 刷题地址参考…

《幻兽帕鲁》游戏对服务器性能的具体要求是什么?

《幻兽帕鲁》游戏对服务器性能的具体要求是什么&#xff1f; CPU&#xff1a;官方最低要求为i5-3570K&#xff0c;但在多人游玩时可能会有明显卡顿。此外&#xff0c;还有建议选择4核或更高性能的处理器&#xff0c;以确保游戏运行流畅。 内存&#xff1a;对于不同人数的联机&…

超越想象:人工智能的奇迹与可能性

超越想象&#xff1a;人工智能的奇迹与可能性 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;作为当今科技领域的热门话题&#xff0c;其奇迹和可能性正在不断被揭示和拓展&#xff0c;超越了人们的想象。从智能机器人到自动驾驶汽车&#xff0c;从语…

苹果ios群控软件开发常用源代码分享!

在移动软件开发领域&#xff0c;苹果设备由于其封闭性和安全性受到了广大开发者的青睐&#xff0c;然而&#xff0c;这也为开发者带来了一些挑战&#xff0c;特别是在进行群控软件开发时。 群控软件是指可以同时控制多台设备的软件&#xff0c;这在自动化测试、批量操作等场景…

数据要素:数字化转型中的新“金矿”及其发展潜力

作为一名在数字化转型项目中摸爬滚打的实践者&#xff0c;我们见证了数据从简单的信息处理工具逐渐演变为驱动经济社会发展的关键要素。近日&#xff0c;多部门联合发布的《“数据要素”三年行动计划&#xff08;2024—2026年&#xff09;》更是将数据要素的重要性提升到了新的…

C++ //练习 10.15 编写一个lambda,捕获它所在函数的int,并接受一个int参数。lambda应该返回捕获的int和int参数的和。

C Primer&#xff08;第5版&#xff09; 练习 10.15 练习 10.15 编写一个lambda&#xff0c;捕获它所在函数的int&#xff0c;并接受一个int参数。lambda应该返回捕获的int和int参数的和。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;v…

Linux:进入vim编辑模式

vim 是一个强大的文本编辑器。 三种模式&#xff1a; 普通模式&#xff08;Normal mode&#xff09; 插入模式&#xff08;Insert mode&#xff09; 命令行模式&#xff08;Command-line mode&#xff09; 当你打开一个文件时&#xff0c;vim 默认处于普通模式。 插入模式&a…