洛谷 P1019 [NOIP2000 提高组] 单词接龙

news/2024/5/17 16:42:59/文章来源:https://blog.csdn.net/2401_82743506/article/details/136159225

 

参考代码 

#include <bits/stdc++.h>
using namespace std;
string s[25];
int vis[25], ans, now = 1, n;
void dfs(int k)
{
    ans = max(ans, now);
    for(int i = 1; i <= n; i++)
    if(vis[i] < 2)
    {
        for(int j = 0; j < s[k].length(); j++)
        if(s[i][0] == s[k][j])
        {
            int cnt1 = j, cnt2 = 0;
            while(s[i][cnt2]==s[k][cnt1]&&cnt1<s[k].length())cnt1++,cnt2++;
            if(cnt1 >= s[k].length())
            {
                vis[i]++;
                now += s[i].length() - cnt2;
                dfs(i); vis[i]--;
                now -= s[i].length() - cnt2;
            }
 
        }
    }
}
int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
    cin >> s[i]; cin >> s[0];
    dfs(0); cout << ans << endl;
}

思路:首先要知道两个单词合并时,合并部分取的是最小重叠部分

相邻的两部分不能存在包含关系就是说如果存在包含关系,就不能标记为使用过,每个单词最多出现两次

搜索的时候开个vis标记数组,用来标记每个单词使用的次数,从开头字母开始搜索,两层for,第一层for搜索每一个单词

第二层for是判断我们搜索的单词的第几位和枚举的单词的首字母相同

比如搜索的单词是touch,当遍历到cheat这个单词时发现touch的第四位和枚举的单词cheat相同时

我们用while循环找出重叠部分长度

那么当前的长度就是 = 当前长度 + 枚举单词长度 - 重叠部分的长度

回溯的时候vis标记减一,恢复长度就好了。注意初始化now为1,因为开头是单个字母。

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

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

相关文章

【plt.bar绘制条形图or柱状图】:从入门到精通,只需一篇文章!【Matplotlib可视化】

【&#x1f4ca;plt.bar绘制条形图】&#xff1a;从入门到精通&#xff0c;只需一篇文章&#xff01;【Matplotlib】 利用Matplotlib进行数据可视化示例 &#x1f335;文章目录&#x1f335; &#x1f50d; 一、初识plt.bar&#xff1a;条形图的基本概念&#x1f4a1; 二、plt.…

【嵌入式学习】IO网络接口day02.18

1.使用fgets统计给定文件的行数 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("./test1.txt","r"))NULL){perror("错误信息");return -1…

MCU电源控制(PWR)与低功耗

目录 一、STM32 的内核和外设电源系统管理&#xff1a; 二、MCU电源监控&#xff1a; 三、三种低功耗模式&#xff1a; 1、睡眠模式&#xff1a; 2、停止模式&#xff1a; 3、待机模式&#xff1a; 一、STM32 的内核和外设电源系统管理&#xff1a; ① 电池备份区域&#…

通俗易懂地解释OpenAI Sora视频生成的特点有哪些?与Runway Gen2、Pika有什么区别?缺点是什么?

OpenAI的Sora模型是最近两天最火热的模型。它生成的视频无论是清晰度、连贯性和时间上都有非常好的结果。在Sora之前&#xff0c;业界已经有了很多视频生成工具和平台。但为什么Sora可以引起如此大的关注&#xff1f;Sora生成的视频与此前其它平台生成的视频到底有哪些区别&…

2024年2月前端技术新动态:迈向现代化的全速前进

随着技术的不断进步&#xff0c;前端领域每月都有新的变化和挑战。2024年2月&#xff0c;我们见证了几项重大的技术更新&#xff0c;从Deno的性能提升到Turborepo的重大改进&#xff0c;再到jQuery 4.0.0 Beta的发布&#xff0c;这些变化不仅标志着前端开发向着更现代化、更高效…

EXCEL中不错的xlookup函数

excel中一般要经常用vlookup函数&#xff0c;但其实经常麻烦要正序&#xff0c;从左边到右边&#xff0c;还要数列&#xff0c;挺麻烦的&#xff0c;xlookup的函数还不错&#xff0c;有个不错的一套视频介绍,B站的&#xff0c;地址是&#xff1a;XLOOKUP函数基础用法&#xff0…

IDEA2021版热部署配置

第一步 Settings中搜索compiler 勾选上Build project automatically 第二步 按快捷键 CtrlAltShift/ 选择第一个Registry 勾选上 注&#xff1a;2021版IDEA 被迁移到了这里 第三步 第四步 pom.xml中添加 配置文件中添加 #springdevtools spring.devtools.restart.…

Nginx实战:日志按天分割

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、方式1&#xff1a;定时任务执行分割脚本 1.分割日志脚本 2.添加定时任务 二、方式2&#xff1a;logrotate配置分割 1.logrotate简单介绍 2.新增切割ngi…

[C++]二叉搜索树

一、定义 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值它的左右子树也分别…

【Java EE初阶十七】网络原理(二)

2. 传输层 2.2 TCP协议 2.2.2 关于可靠传输 4.滑动窗口 前面的三个机制&#xff0c;都是在保证 tcp 的可靠性&#xff1b; TCP 的可靠传输,是会影响传输的效率的.(多出了一些等待 ack 的时间,单位时间内能传输的数据就少了)&#xff1b; 滑动窗口,就让可靠传输对性能的影响,更…

集团企业大数据应用:突破痛点,释放数据价值

在数字经济日益崛起的背景下&#xff0c;集团企业以其管理范围广泛、业务领域多元化和分支机构复杂化的特性&#xff0c;在市场竞争中扮演着重要角色。为了维持和提升这种竞争力&#xff0c;大数据应用成为了集团企业不可或缺的战略工具。然而&#xff0c;在实际应用中&#xf…

安装部署k8s集群

系统&#xff1a; CentOS Linux release 7.9.2009 (Core) 准备3台主机 192.168.44.148k8s-master92.168.44.154k8s-worker01192.168.44.155k8s-worker02 3台主机准备工作 关闭防火墙和selinux systemctl disable firewalld --nowsetenforce 0sed -i s/SELINUXenforcing/SELI…

Vue中 如何监听键盘事件中的按键

在Web前端开发中&#xff0c;键盘事件的处理是非常常见的需求之一。而在Vue框架中&#xff0c;如何监听键盘事件中的按键是一个相对简单但又很实用的功能。本文将为你介绍如何在Vue中监听键盘事件&#xff0c;并演示一些常用的按键操作。 首先&#xff0c;在Vue中监听键盘事件…

《隐私计算简易速速上手小册》第4章:技术挑战与解决方案(2024 最新版)

文章目录 4.1 隐私计算中的技术难题4.1.1 基础知识4.1.2 重点案例:同态加密在金融数据分析中的应用4.1.3 拓展案例 1:安全多方计算在医疗数据共享中的应用4.1.4 拓展案例 2:差分隐私在社交媒体分析中的应用4.2 数据加密与解密的挑战4.2.1 基础知识4.2.2 重点案例:加密的在线…

Mysql5.6忘记密码,如何找回(windows)

mysql5.6安装 第一步&#xff1a;关闭正在运行的数据库服务 net stop mysql第二步&#xff1a;在my.ini文件当中的[mysqld] 任意一个位置放入 skip-grant-tables第三步&#xff1a;启动mysql服务 net start mysql第四步&#xff1a;服务启动成功后就可以登录了&#xff0c;…

【教程】Linux使用aria2c多线程满速下载

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 安装aria2c&#xff1a; sudo apt-get install aria2多线程下载&#xff1a; aria2c -x 16 -s 16 <url> 比如&#xff1a; aria2c -x 16 -s 16 http://images.cocodataset.org/zips/test2017.zip

库的操作【数据库】

目录 一、创建数据库 二、删除数据库 ​编辑 三、数据库编码问题 四、库的改查 查 1&#xff09;查有哪些数据库&#xff1a; 2&#xff09;使用某个数据库&#xff1a; 3&#xff09;当前在哪个数据库&#xff1a; 4&#xff09;有谁在使用 改alter 五、备份和恢复 …

QPaint绘制自定义坐标轴组件00

最终效果 1.创建一个ui页面&#xff0c;修改背景颜色 鼠标右键->改变样式表->添加颜色->background-color->选择合适的颜色->ok->Apply->ok 重新运行就可以看到widget的背景颜色已经改好 2.创建一个自定义的widget窗口小部件类&#xff0c;class MyChart…

代码检测规范和git提交规范

摘要&#xff1a;之前开发的项目&#xff0c;代码检测和提交规范都是已经配置好的&#xff0c;最近自己新建的项目就记录下相关配置过程。 1. ESlint配置 2013年6月创建开源项目&#xff0c;提供一个插件化的JavaScript代码检测工具&#xff0c;创建项目是生成的eslintrc.js文…

红色警戒 3 修改游戏速度

原文&#xff1a;https://blog.iyatt.com/?p13852 红警 2 是有提供游戏速度修改的&#xff0c;红警 3 没有&#xff0c;而且游戏速度似乎和 FPS 关联的&#xff0c;在配置低一些的电脑上会变慢&#xff0c;FPS 也降低&#xff0c;我电脑上开最高画质 FPS 不超过 30&#xff0c…