1 条题解

  • 0
    @ 2026-6-19 10:30:40

    📝 题目大意

    高桥君在一栋 100 层的大楼中,从 X 层移动到 Y 层。如果向上移动不超过 2 层,或向下移动不超过 3 层,他会选择走楼梯;否则乘电梯。判断他是否会走楼梯。

    💡 解题思路

    1. 题目分析:楼层范围仅为 1 到 100,且 X ≠ Y。本质是判断移动方向与距离是否符合楼梯条件——向上 1~2 层或向下 1~3 层。
    2. 算法推导
      • 计算楼层差 diff = Y - X
        • diff > 0(上楼):判断 diff <= 2
        • diff < 0(下楼):判断 |diff| <= 3,即 X - Y <= 3
      • 满足任一条件输出 "Yes",否则输出 "No"
    3. 边界与细节
      • X 和 Y 均在 [1, 100] 且 X ≠ Y,无需考虑相等情况。
      • 注意上楼和下楼的条件不同:上楼最多 2 层,下楼最多 3 层。不要混淆或写反。

    ⏱️ 复杂度分析

    • 时间复杂度O(1)O(1),仅做常数次判断与输出。
    • 空间复杂度O(1)O(1),仅使用两个整型变量。

    💻 标准代码 (C++)

    #include <iostream>
    using namespace std;
    int main() {
        int X, Y;
        cin >> X >> Y;
        // 上楼:Y 在 X 上方 1~2 层;下楼:Y 在 X 下方 1~3 层
        if ((Y - X > 0 && Y - X <= 2) || (X - Y > 0 && X - Y <= 3)) {
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    740
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者