题解
【基础】简单单词接龙
1 条题解
-
0
#include <iostream> #include <string> using namespace std; int n; // 单词总数 string words[50]; // 存储所有单词 bool used[50] = {false};// 标记单词是否已使用 int max_len = 1; // 最长龙的长度(至少为1,即龙头本身) // 深度优先搜索:当前龙的最后一个单词下标为last,当前长度为len void dfs(int last, int len) { // 更新最长长度 if (len > max_len) { max_len = len; } // 尝试用所有未使用的单词接龙 for (int i = 0; i < n; i++) { // 如果单词未使用,且能接在当前龙的后面 if (!used[i] && words[last][1] == words[i][0]) { used[i] = true; // 标记为已使用 dfs(i, len + 1); // 递归继续接龙 used[i] = false; // 回溯:恢复未使用状态 } } } int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> words[i]; } // 龙头是第一个单词,标记为已使用后开始搜索 used[0] = true; dfs(0, 1); cout << max_len << endl; return 0; }
- 1