题目描述

单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast 和 astonish,如果接成一条龙则变为 beastonish,另外相邻的两部分不能存在包含关系,例如 at 和 atide 间不能相连。

输入格式

输入的第一行为一个单独的整数 n 表示单词数,以下 n 行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在。

输出格式

只需输出以此字母开头的最长的“龙”的长度。

输入输出样例

输入 

5
at
touch
cheat
choose
tact
a

输出 

23

说明/提示

样例解释:连成的“龙”为 atoucheatactactouchoose

n≤20。

解题思路

这道题要求两个字符串要有连接部分,但是又不能互相包含,并且每个字符串使用不能超过两次,最后将所有字符串连起来后计算最后字符串的总长度然后输出

题目要求首个字母必须是c,那么我们输入所有字符串后先查询有没有首字母和c相同的,那么就以这个为龙头进行dfs

在dfs函数中,我们可以先存入字符串的长度,随后在循环中查找符合要求的字符串,在查询每一个字符串后记得标记,如果访问次数大于2那就跳过。

查询字符串时,我们可以使用substr函数进行剪切,如果符合要求那就返回剪切后的字符串,如果找不到符合要求的就返回“0”,在dfs函数中也要记得判断一下更新后的字符串是否为“0”,如果不为0才可以继续进行dfs

完整代码如下:

#include<bits/stdc++.h>
using namespace std;
int n,mark[30]={0},sum=0;
string s[30];
string pd(string len1,string len2)
{int a=len1.size(),b=len2.size();for(int i=1;i<a&&i<b;i++){if(len1.substr(a-i,i)==len2.substr(0,i)){return len1.substr(0,a-i)+len2;}}return "0";
}
void dfs(string drag)
{if(sum<drag.size()){sum=drag.size();} for(int i=0;i<n;i++){if(mark[i]<2){string stl=pd(drag,s[i]);if(stl!="0"){mark[i]++;dfs(stl);mark[i]--;}}}
}
int main()
{char c;cin>>n;for(int i=0;i<n;i++){cin>>s[i];}cin>>c;for(int i=0;i<n;i++){if(s[i][0]==c){mark[i]++;dfs(s[i]);mark[i]--;}}cout<<sum;return 0;
}

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

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

相关文章

详解力扣高频SQL50题之1633. 各赛事的用户注册率【简单】

传送门&#xff1a;1633. 各赛事的用户注册率 题目 用户表&#xff1a; Users -------------------- | Column Name | Type | -------------------- | user_id | int | | user_name | varchar | -------------------- user_id 是该表的主键(具有唯一值的列)。 该表中的每行包…

FROM stakater/java8-alpine 构建cocker镜像

在 Dockerfile 中&#xff0c;FROM stakater/java8-alpine 是第一条也是最核心的指令&#xff0c;它定义了构建新镜像所基于的「基础镜像」。以下是逐层解析&#xff1a;&#x1f50d; 关键字拆解 1. FROM —— 起点指令 ✅ 作用&#xff1a;声明当前镜像的起点&#xff08;父镜…

Word2Vec模型训练全流程解析:从数据预处理到实体识别应用

请添加图片描述 训练Word2Vec模型 概述 问题 我们如何训练Word2Vec模型&#xff1f;在特定数据集上训练Word2Vec模型何时是有利的&#xff1f; 目标 理解在自有数据上训练Word2Vec模型而非使用预训练模型的优势 Colab环境配置 运行以下代码以启用辅助函数并重新读取数据…

在Ubuntu上使用QEMU学习RISC-V程序(2)gdb调试

文章目录一、准备工作二、基本调试流程1. 设置断点2. 执行程序3. 查看源代码/汇编三、查看寄存器1. 查看通用寄存器2. 查看特殊寄存器四、查看内存1. 内存查看命令2. 内存修改命令五、调试实战示例六、高级调试技巧1. 条件断点2. 自动显示3. 内存断点&#xff08;观察点&#x…

不止于“亮”:一盏智慧路灯的技术进化史——塔能科技用“落地性”定义行业标准

在凌晨3点的园区道路之上&#xff0c;路灯会随着车辆的靠近而自动亮起&#xff0c;待车辆逐渐远去之后&#xff0c;又会缓缓地调暗下来&#xff1b;当电缆意外被触碰的时候&#xff0c;系统能够在短短3秒之内自动发出报警信息&#xff0c;并且推送出维修工单&#xff1b;而当一…

Redis的String数据类型底层实现

redis就是用c语言写&#xff0c;但redis的string并没有直接用c语言的string&#xff0c;而是自己搞了一个 SDS 结构体来表示字符串。SDS 的全称是 Simple Dynamic String&#xff0c;中文叫做“简单动态字符串”。想知道为什么这么做&#xff0c;我们先看看c语言的string是什么…

【音视频学习】四、深入解析视频技术中的YUV数据存储方式:从原理到实践

文章目录 引言 1. YUV 基础:为什么它比 RGB 更适合视频? 1.1 YUV 与 RGB 的核心区别 1.2 YUV色度下采样简介 2. YUV 的三大存储方式 方式一:平面格式(Planar) 方式二:半平面格式(Semi-Planar ) 方式三:打包格式(Packed YUV) 三种存储方式对比: 3. 如何选择合适的 Y…

前端项目组成

一、前端项目常见模块及功能&#xff08;以 Vue/React 通用结构为例&#xff09; 前端项目的模块本质是「按功能拆分的代码文件/文件夹」&#xff0c;就像盖房子的「砖、梁、窗」各司其职&#xff1a;模块类型功能说明&#xff08;大白话&#xff09;举个例子pages&#xff08;…

聚观早报 | 猿编程推动中美青少年AI实践;华为Pura 80数字版售价公布;iPhone 17 Air电池曝光

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。整理丨肖羽7月24日消息猿编程推动中美青少年AI实践华为Pura 80数字版售价公布iPhone 17 Air电池曝光亚马逊收购AI初创公司Bee蜂巢半固…

unittest 案例执行顺序详解

unittest 案例执行顺序详解在 unittest 框架中&#xff0c;测试用例的执行顺序有默认规则&#xff0c;也可通过自定义方式调整。以下是具体说明&#xff1a;一、默认执行顺序规则unittest 对测试用例的执行顺序遵循 “按测试方法名的 ASCII 码排序” 原则&#xff0c;具体逻辑如…

【web大前端】001_前端开发入门:创建你的第一个网页

前端开发入门&#xff1a;创建你的第一个网页 在当今数字化时代&#xff0c;网页已经成为人们获取信息和交流的重要平台。对于想要学习编程的人来说&#xff0c;前端开发往往是一个不错的起点。本文将带你通过简单的两步&#xff0c;创建属于你的第一个网页程序。 点击这里去…

HTTP性能优化终极指南:从协议原理到企业级实践

前言&#xff1a;为什么性能优化是Web开发的生命线&#xff1f;根据Google研究数据&#xff0c;当页面加载时间从1秒增加到3秒时&#xff0c;跳出率提升32%&#xff1b;当达到5秒时&#xff0c;转化率下降90%。本文将通过七层优化体系&#xff0c;带您掌握HTTP性能优化的核心技…

Python 数据分析(二):Matplotlib 绘图

目录 1. 简介2. 绘图 2.1 折线图 2.1.1 单线2.1.2 多线2.1.3 子图 2.2 散点图2.3 直方图2.4 条形图 2.4.1 纵置2.4.2 横置2.4.3 多条 2.5 饼图 1. 简介 Matplotlib 是 Python 提供的一个绘图库&#xff0c;通过该库我们可以很容易的绘制出折线图、直方图、散点图、饼图等丰…

Scrapy分布式爬虫数据统计全栈方案:构建企业级监控分析系统

引言&#xff1a;数据统计在分布式爬虫中的战略价值在分布式爬虫系统中&#xff0c;​​数据统计与分析​​是系统优化的核心驱动力。根据2023年爬虫工程调查报告&#xff1a;实施专业统计方案的爬虫系统性能提升​​40%以上​​数据驱动的优化策略可减少​​70%​​的资源浪费…

计划任务(at和cron命令介绍及操作)

简介计划任务主要做一些周期性的任务&#xff0c;目前最主要的是定期备份数据分类at&#xff1a;一次性调度执行cron&#xff1a;循环调度执行at简介at 是一个用于安排一次性任务的命令行工具&#xff0c;适合在指定时间点执行单次任务语法at 时间 选项若要提交&#xff0c;通过…

[2025CVPR:图象合成、生成方向]WF-VAE:通过小波驱动的能量流增强视频 VAE 的潜在视频扩散模型

论文概述​ 这篇论文提出了一种名为WF-VAE(Wavelet Flow VAE)​的新型视频变分自编码器(Video VAE),旨在解决潜在视频扩散模型(LVDM)中的关键瓶颈问题,包括高计算成本和潜在空间不连续性。WF-VAE利用小波变换(Wavelet Transform)来分解视频信号,并通过能量流路径优…

Map接口-实现类HashMap

目录 一、什么是Map&#xff1f; 二、实现类HashMap 1.关键特点 无序、key唯一、value允许重复、key和value允许为null。 2.数据结构 2.1 JDK 1.7 2.2 JDK 1.8 2.3 关键参数 2.4 关键计算 3.扩容方式 3.1 初始化 3.2 扩容 4.常见方法 4.1 根据key存入value 4.2 …

深入解析Hadoop如何实现数据可靠性:三副本策略、校验和验证与Pipeline复制

Hadoop数据可靠性的重要性在大数据时代&#xff0c;数据可靠性已成为企业数字化转型的生命线。根据IDC预测&#xff0c;到2025年全球数据总量将增长至175ZB&#xff0c;其中企业数据占比超过60%。面对如此庞大的数据规模&#xff0c;任何数据丢失或损坏都可能造成数百万美元的经…

15.6 DeepSpeed+Transformers实战:LLaMA-7B训练效率提升210%,显存直降73%

DeepSpeedTransformers实战:LLaMA-7B训练效率提升210%的底层逻辑与实操指南 当LLaMA-7B的训练显存需求达到78GB时,单卡A100(80GB)几乎濒临溢出,更不用说普通GPU集群。而DeepSpeed与Hugging Face Transformers的深度集成,通过"ZeRO三阶段优化+混合精度+梯度检查点&q…

Nginx + PM2 实现Express API + React 前端 本地测试服务器搭建

一、工具准备 openSSL&#xff1a;需要针对https请求头 生成对应的 自签名证书。 Nginx&#xff1a;服务器搭建工具 nodeJS: Express API运行环境 PM2: node进程管理器。用于替代npm命令管理 启动命令。 二、openSSL 本地自签名证书生成。 创建服务器空文件夹&#xff08…