Skip to content

喵~ 主人,欢迎来到我的题解小课堂!今天我们要看的是一道非常可爱的入门题,Codeforces 上的 1703A - YES or YES?。这道题就像是在问你“要不要吃小鱼干呀?”,答案当然是“YES”啦!嘻嘻~

题目大意

这道题超级简单哦,听我慢慢给你讲喵~

题目会给你一个长度为 3 的字符串,这个字符串里只包含大写或小写的英文字母。你需要判断这个字符串是不是 "YES",但是呢,它不区分大小写。

举几个例子就好懂啦:

  • 如果输入是 "yES",那它就是 "YES" 喵。
  • 如果输入是 "Yes",那它也是 "YES" 喵。
  • 如果输入是 "yes",当然还是 "YES" 啦。
  • 但如果输入是 "Noo" 或者 "yEz",那就不是 "YES" 了哦。

明白了嘛?我们就是要写一个程序来做这个判断,如果是,就输出 "YES",如果不是,就输出 "NO"。

解题思路

要解决这个问题,就像猫猫抓老鼠一样,要直接、准确!喵~

既然字符串的长度固定是 3,我们就可以一个一个字符地来检查。

  1. 检查第一个字符:它必须是 'Y' 或者 'y'。
  2. 检查第二个字符:它必须是 'E' 或者 'e'。
  3. 检查第三个字符:它必须是 'S' 或者 's'。

最关键的是,这三个条件必须 同时 满足才行!在编程里,我们就需要用“与”逻辑(在 C++ 里是 &&)把这三个条件连接起来。只要其中任何一个条件不满足,那这个字符串就不是我们想要的 "YES" 啦。

所以,我们的判断逻辑就是: (第一个字符是'Y'或'y') 并且 (第二个字符是'E'或'e') 并且 (第三个字符是'S'或's')

如果这个总条件成立,就输出 "YES",否则就输出 "NO"。是不是超级简单呀?喵~

题解代码

这是 C++ 的实现方法,我已经加上了注释,主人可以看看哦~

cpp
#include <iostream>
#include <string>
#include <vector>

// 这个函数用来解决单个测试用例喵
void solve() {
    // 先声明一个字符串变量 s,用来接收输入的字符串
    std::string s;
    std::cin >> s;

    // 接下来就是核心判断逻辑啦!
    // 我们检查 s[0] 是不是 'Y' 或者 'y'
    // 并且 (&&) s[1] 是不是 'E' 或者 'e'
    // 并且 (&&) s[2] 是不是 'S' 或者 's'
    if ((s[0] == 'Y' || s[0] == 'y') &&
        (s[1] == 'E' || s[1] == 'e') &&
        (s[2] == 'S' || s[2] == 's')) {
        // 如果三个条件都满足,就说明它是 "YES" 的一种形式
        std::cout << "YES\n";
    } else {
        // 否则,就不是我们想要的答案
        std::cout << "NO\n";
    }
}

int main() {
    // 这两行是为了让输入输出更快一点,是竞赛中的常用技巧喵
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);

    // 读入测试用例的数量 t
    int t;
    std::cin >> t;
    
    // 循环 t 次,每次都调用 solve 函数解决一个问题
    while (t--) {
        solve();
    }

    return 0; // 程序顺利结束啦
}

知识点小贴士

这道题虽然简单,但里面包含了一些非常基础和重要的知识点哦,我们一起来复习一下吧,喵~

  1. 字符串与字符访问 在 C++ 中,std::string 类型的变量可以像数组一样,通过方括号 [] 来访问其中的单个字符。字符串的索引是从 0 开始的,所以对于长度为 3 的字符串 ss[0] 是第一个字符,s[1] 是第二个,s[2] 是第三个。

  2. 逻辑运算符 && (与) 和 || (或)

    • || (或):表示左右两个条件只要有一个是真的,整个表达式就是真的。比如 s[0] == 'Y' || s[0] == 'y',意思是只要第一个字符是 'Y' 或者 'y',这个条件就满足了。
    • && (与):表示左右两个条件必须 同时 为真,整个表达式才为真。我们在三个字符的判断条件之间使用 &&,就是要求它们必须全部满足。
  3. if-else 条件语句 这是编程中最基本的逻辑控制结构。if 后面跟着一个条件,如果条件为真,就执行 if 块里的代码;否则(else),就执行 else 块里的代码。就像是“如果天晴,就出去玩;否则,就在家睡觉”一样,喵~

  4. 大小写转换(一个更优雅的方法) 除了像上面那样对每个字符的大小写都进行判断,还有一个更聪明的办法!我们可以先把输入字符串的每个字符都统一转换成大写(或小写),然后再跟 "YES"(或 "yes")进行比较。这样代码会更简洁!

    在 C++ 中,我们可以使用 <cctype> 头文件里的 toupper() 函数。

    cpp
    // 另一个思路的 solve 函数
    #include <cctype> // 需要包含这个头文件
    
    void solve_alternative() {
        std::string s;
        std::cin >> s;
        
        // 把每个字符都变成大写
        s[0] = toupper(s[0]);
        s[1] = toupper(s[1]);
        s[2] = toupper(s[2]);
        
        // 然后直接和 "YES" 比较就好啦
        if (s == "YES") {
            std::cout << "YES\n";
        } else {
            std::cout << "NO\n";
        }
    }

    这个方法是不是看起来更干净利落呢?喵~

好啦,今天的题解就到这里啦!希望对主人有帮助哦。下次再遇到有趣的题目,我们再一起研究吧!喵呜~

Released under the MIT License.