news 2026/4/3 7:38:34

DFS -- 1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DFS -- 1

P1019 [NOIP 2000 提高组] 单词接龙

https://www.luogu.com.cn/problem/P1019

来发题解的

首先看题目会觉得很简单,但是要怎么用代码实现呢。

字符串这个东西本质其实和数组差不多,只要我们掌握一些语法和函数

substr(x,y)

这是一个可以取出字符串任意一个部分的函数

第一个参数 x -- 代表要截字符串的起始位置

第二个参数 y -- 代表要截字符串的长度

比如 t = 'string' , t.substr(0,2) 就是 st

还有一个用法,比如 substr(4) 就是 ng //从位置4开始到结尾的子字符串

//字符串默认是从0开始索引的

有了这个函数,这个题目就会简单很多,接下来我们继续思考

1.怎么找到对应相等的部分,并接起来

2.怎么递归,要传递什么参数下去,即怎么去dfs。

----首先我们要先找到龙头,即第一个字母的对应,这样才会进行dfs

这很简单,我们只需一个for循环的判断即可。

然后进行匹配,当找到两个字符串相对应的两个部分,就把加起来,再进行dfs

#include<bits/stdc++.h> using namespace std; #define int long long #define endl '\n' const int N = 39; int n,ans = 0; char c; string ss[N]; int v[N] = {0}; void dfs(string s){ int ank = s.size(); ans = max(ans,ank); for(int i = 1 ; i <= n ; i++){ if(v[i] == 2) continue; //每个字符串最多只能被用一次 for(int j = 1 ; j <= min(s.size(),ss[i].size()) ; j++){ if(s.substr(s.size() - j) == ss[i].substr(0,j)){ v[i] ++; dfs(s + ss[i].substr(j));//把后面不相等的部分给接上 v[i] --; } } } } void solve(){ cin>>n; for(int i = 1 ; i <= n ; i++) cin>>ss[i]; cin>>c; for(int i = 1 ; i<= n ; i++){ if(ss[i][0] == c){ v[i] ++; dfs(ss[i]); v[i]--; // 回溯 } } cout<<ans; } signed main() { ios::sync_with_stdio(0); cin.tie(0); int t = 1; //cin >> t; while (t--) { solve(); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 9:24:16

基于springboot二手物品交易平台系统(源码+lw+部署文档+讲解等)

课题介绍 本课题聚焦二手物品交易市场信息不对称、交易流程不规范、信任机制缺失等痛点&#xff0c;设计并实现基于Spring Boot框架的二手物品交易平台系统。系统以Spring Boot为后端核心开发框架&#xff0c;整合MyBatis-Plus实现交易数据高效持久化&#xff0c;搭配MySQL构建…

作者头像 李华
网站建设 2026/3/31 12:20:00

分布式ID之雪花算法

分布式ID 分布式ID&#xff1a;distributed id&#xff0c;在分布式系统中生成的全局唯一标识符。 使用场景&#xff1a;订单号、分库分表环境下的数据库主键等 分布式ID常见的实现方式&#xff1a; UUID&#xff1a;例如&#xff0c;UUID.randomUUID().toString()&#xff0c;…

作者头像 李华
网站建设 2026/4/2 19:18:43

TDengine 小白入门指南

TDengine 小白入门指南 &#x1f4d8; TDengine 是什么&#xff1f; TDengine 是一款开源、高性能、云原生、AI 驱动的时序数据库&#xff08;Time-Series Database&#xff0c;简称 TSDB&#xff09;。简单来说&#xff0c;它是一个专门为时间序列数据设计的数据库系统&…

作者头像 李华
网站建设 2026/4/1 19:55:55

基于深度学习yolov8的课堂行为监测系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…

作者头像 李华
网站建设 2026/4/3 4:29:04

少样本学习下的提示系统NLP理解:如何用10个例子训练模型?

少样本学习实战&#xff1a;用10个例子构建有效的NLP提示系统 一、引言&#xff1a;为什么10个例子能训练NLP模型&#xff1f; 想象一下&#xff1a;你是一位语文老师&#xff0c;要教学生识别“比喻句”。如果只讲定义“用跟甲事物有相似之点的乙事物来描写或说明甲事物”&a…

作者头像 李华
网站建设 2026/3/25 23:29:46

DDD笔记 | 领域驱动设计(DDD)实战

一、概述简介领域驱动设计&#xff08;Domain-Driven Design&#xff0c;简称 DDD&#xff09;是由 Eric Evans 于 2003 年在其著作《Domain-Driven Design: Tackling Complexity in the Heart of Software》&#xff08;中文译名《领域驱动设计&#xff1a;软件核心复杂性应对…

作者头像 李华