C++实现单词接龙问题,求解最长“龙”的长度
以下是使用 C++ 实现单词接龙问题的代码: ```cpp #include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; // 检查两个单词是否可以相连,并返回重合部分的长度 int overlap(const string& a, const string& b) { for (int i = 1; i < min(a.size(), b.size()); ++i) { if (a.substr(a.size() - i) == b.substr(0, i)) { // 检查相邻两部分是否存在包含关系 if (a.size() < b.size() && a == b.substr(0, a.size())) continue; if (b.size() < a.size() && b == a.substr(a.size() - b.size())) continue; return i; } } return 0; } // 深度优先搜索函数,用于寻找最长的“龙” void dfs(const vector<string>& words, vector<int>& used, string current, int& maxLength) { maxLength = max(maxLength, static_cast<int>(current.size())); for (int i = 0; i < words.size(); ++i) { if (used[i] < 2) { int ol = overlap(current, words[i]); if (ol > 0) { used[i]++; dfs(words, used, current + words[i].substr(ol), maxLength); used[i]--; } } } } int main() { int n; cin >> n; vector<string> words(n); for (int i = 0; i < n; ++i) { cin >> words[i]; } char start; cin >> start; int maxLength = 0; vector<int> used(n, 0); for (int i = 0; i < n; ++i) { if (words[i][0] == start) { used[i]++; dfs(words, used, words[i], maxLength); used[i]--; } } cout << maxLength << endl; return 0; } ``` ### 代码解释: 1. **`overlap` 函数**:用于检查两个单词是否可以相连,并返回它们的重合部分的长度。在检查过程中,会排除相邻两部分存在包含关系的情况。 2. **`dfs` 函数**:深度优先搜索函数,用于寻找最长的“龙”。它会遍历所有可能的单词组合,并更新最长“龙”的长度。 3. **`main` 函数**:读取输入的单词和开头字母,然后对每个以开头字母开头的单词调用 `dfs` 函数,最后输出最长“龙”的长度。 ######[AI问答 | 670点数解答 | 2026-06-09 14:08:21]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)426
- Python 与 C 语言:一行字符串中单词个数统计的实现与解析(字节豆包 | 658点数解答 | 2025-12-07 17:39:44)53
- Python 实现输入字符串统计单词个数,轻松解决连续空格难题!(DeepSeek | 141点数解答 | 2025-12-14 20:12:06)67
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)382
- Python知识大挑战:10 道题揭秘编程关键要点与答案(字节豆包 | 296点数解答 | 2024-10-20 19:31:00)247
- 函数详解:shu_ju_jie_gou实现数据结构处理与统计 (字节豆包 | 279点数解答 | 2024-10-31 14:31:13)176
- Python函数:数据结构处理与操作全解析,含元组、列表、集合处理示例(百度文心 | 837点数解答 | 2024-10-31 14:41:27)242
- Python函数:shu_ju_jie_gou 处理数据结构、查找与均值计算(GPT | 668点数解答 | 2024-11-01 14:05:17)199
- Python函数:处理数据结构,实现查找、去重与均值计算(GPT | 990点数解答 | 2024-11-01 18:51:33)172
- C语言实现:从压缩字符串还原出原始字符串的代码解析(字节豆包 | 299点数解答 | 2024-11-10 19:31:07)302
- C语言:从“长度+字母”压缩串还原原始字符串的代码实现(GPT | 600点数解答 | 2024-11-14 18:24:57)190
- C语言实现:从压缩字符串到解压字符串的巧妙转换(讯飞星火 | 638点数解答 | 2024-11-14 18:25:06)330