专栏文章

题解:B4396 [蓝桥杯青少年组国赛 2025] 第一题

B4396题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio2gcbb
此快照首次捕获于
2025/12/02 12:16
3 个月前
此快照最后确认于
2025/12/02 12:16
3 个月前
查看原文
模拟题。对于每个开始位置判断即可。
判断的思路是首先如果 t 对应位置字符是 ? 则这一位直接判断成功,如果不是则如果相同则整个判断失败,如果不同那么忽略大小写之后应该相同否则判断失败。忽略大小写相同可以通过全部转为小写实现。
C++ 中的实现方式:
判断 ch 是否为大写:ch >= 'A' && ch <= 'Z'
ch 为大写,转为小写:ch - 'A' + 'a'
不知道大小写,大写转为小写:ch >= 'A' && ch <= 'Z' ? ch - 'A' + 'a' : ch
综上,判断 s 的某个子串和 t 是否完全匹配的方式是:
CPP
bool ismatch(const string &s, const string &t)
{
    for(int i=0;i<s.size();i++)
    {
        if(t[i] != '?' && (s[i] == t[i] || (s[i] >= 'A' && s[i] <= 'Z' ? s[i] - 'A' + 'a' : s[i]) != (t[i] >= 'A' && t[i] <= 'Z' ? t[i] - 'A' + 'a' : t[i]))) return false;
    }
    return true;
}
吐槽一下,可以不看
赛时题面过于抽象拼尽全力无法战胜值得拿下 81%81\% 测试点正确率(满分忘了)/fn/fn/fn
具体来讲认为大小写相同也能匹配。强烈不建议洛谷拿到原题面后不加修改就将此题题面更改为原题面。同时数次猜测题意均猜错。
另外,这题 1010 个测试点哪来的 81%81\% 正确率?但是试题相关问题不便回答,请自行理解。
总结是蓝桥杯出题人不如谷民。

评论

0 条评论,欢迎与作者交流。

正在加载评论...