当前位置: 首页 > news >正文

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; }
http://www.gsyq.cn/news/159580.html

相关文章:

  • 基于springboot反诈APP系统(源码+lw+部署文档+讲解等)
  • 协议号protocol number
  • 基于springboot房屋租赁管理系统(源码+lw+部署文档+讲解等)
  • AWS S3枚举基础
  • 深入解析:在 Ubuntu 上安装 MySQL 的详细指南
  • 基于樽海鞘算法(SSA)的极限学习机(ELM)回归预测对比:BP、GRNN、ELM与SSA - ELM
  • 京东最新滑块逆向 e卡绑定
  • 分布式ID之雪花算法
  • 2026年最新权威AI编程软件评测和推荐
  • 基于springboot二手物品交易平台系统(源码+lw+部署文档+讲解等)
  • 艾曲波帕联合治疗方案:肿瘤放化疗后血小板低的优化策
  • STM32F103 学习笔记-21-串口通信(第1节)-串口通信协议简介
  • 学长亲荐8个AI论文软件,研究生论文写作不再难!
  • DDD笔记 | 领域驱动设计(DDD)实战
  • 快速幂
  • 我发现流末尾数据丢失,后来才知道重写_transform的flush方法
  • 实用指南:Spring Boot:DTO、VO、BO、Entity 的正确工程化分层
  • 私有知识库:数字时代的知识守护者
  • 中成空间的官网和联系方式是多少?2025年智能气膜服务商推荐 - 速递信息
  • 云原生密钥管理:Sealed Secrets与Vault
  • scheme 符号求导
  • 『JROI-4』沈阳大街 2
  • [quote]all the wood behind one arrow
  • [从程序员到架构师] 微服务场景实战 - 注册发现
  • Java毕设项目推荐-基于Java的网上宠物店管理系统宠物销售、服务预约、库存管理、客户互动【附源码+文档,调试定制服务】
  • Elasticsearch核心原理——倒排索引、映射与分词对搜索质量的影响路径
  • Cucumber特性文件编写规范
  • 汽车领域智能体构建全解析—腾讯云黑客松Agent应用创新挑战赛微信公众号赛道实战复盘
  • nt!MiInitializeLoadedModuleList分析和全局变量nt!PsLoadedModuleList初始化和LoaderBlock->LoadOrderListHead的关系非常重要
  • transformer-explainer