1 条题解
-
0
自动搬运
来自洛谷,原作者为

一扶苏一
休息结束。邮箱 yifusuyi@qq.com搬运于
2025-08-24 21:16:58,当前版本为作者最后更新于2024-12-18 21:16:30,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
[语言月赛 202412] 正在联系教练退赛 题解
Source & Knowledge
本题来源于 2024 年 12 月的语言月赛,主要考察字符串操作和循环结构。
文字题解
题目大意
题目要求检查每支队伍的名称是否包含主办方字典中的任何字符串作为子串。如果包含,则输出 "Yes",表示该队伍需要退赛;否则输出 "No"。
解析
读入
首先读取队伍数量
n和队伍名称,然后读取字典的大小m和字典中的字符串。int n, m; cin >> n; for (int i = 0; i < n; ++i) { cin >> s[i]; } cin >> m; for (int i = 0; i < m; ++i) { cin >> t[i]; }检查子串
对于每个队伍名称
s[i],我们需要检查它是否包含字典中的任何一个字符串t[j]作为子串。for (int i = 0; i < n; ++i) { bool flag = false; // 标记是否需要退赛 for (int j = 0; j < m; ++j) { // 检查 s[i] 中是否包含 t[j] for (int p = 0; p < int(s[i].size()); ++p) { // substr 的第二个参数是子串长度,如果超出范围,它会返回剩余的部分 if (s[i].substr(p, t[j].size()) == t[j]) { flag = true; break; // 找到子串,跳出内层循环 } } if (flag) break; // 队伍需要退赛,跳出外层循环 } // 根据标记输出结果 if (flag) cout << "Yes\n"; else cout << "No\n"; }输出
根据上述检查,输出每支队伍是否需要退赛的结果。
代码注释
s[i].substr(p, t[j].size()):使用substr函数来获取s[i]从位置p开始长度为t[j].size()的子串。如果p + t[j].size()超出了s[i]的长度,substr将只返回从p开始到s[i]结尾的部分。
- 1
信息
- ID
- 11105
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者