top1编程
← 返回题目
题解

旅游费用

1 条题解

  • 0
    @ 2026-8-4 10:00:35

    解题思路

    这道题是一道典型的“分段计费”问题,就像坐出租车一样,人数不同,每个人的单价就不同。

    我们先读入人数 n,然后判断人数属于哪个区间:

    • 如果 n 小于等于 5(也就是 5 人及以下),按照散客标准,每人 300 元,总费用 = n × 300;
    • 如果 n 大于 5,按照团队标准,每人 280 元,总费用 = n × 280。

    为什么先判断人数呢?因为“超过5人”和“5人以下”这两句话已经把人数分成了两个区间。特别要注意边界:题目说“5人以下(含5人)”,所以 n = 5 时也要用 300 元每人,不能搞错。这类题目最常见的错误就是把 n = 5 这个边界放错了区间。记住口诀:“含”字表示这一端要包含进来,“超过”表示这一端不包含。

    确定好属于哪个区间后,用 if-else 语句分别计算总费用(人数 × 每人单价),最后输出即可。

    参考代码

    #include using namespace std;

    int main() { int n; // n 表示去旅游的人数 cin >> n; // 读入人数

    int ans;         // ans 用来保存最终的总费用
    if (n <= 5) {    // 5人以下(含5人)按散客标准
        ans = n * 300;   // 每人300元,总费用 = 人数 × 单价
    } else {         // 超过5人按团队标准
        ans = n * 280;   // 每人280元,总费用 = 人数 × 单价
    }
    
    cout << ans << endl;  // 输出总费用
    return 0;
    

    }

    复杂度分析

    题目中 n 表示人数,最大是 500。这个程序只做一次判断和一次乘法运算,不管 n 是 1 还是 500,运算次数都一样多,所以时间复杂度是 O(1)。程序里只用了两个 int 变量存放人数和费用,占用的空间固定,空间复杂度同样是 O(1)。

    • 1