学生小羊 2025-04-14 19:39 采纳率: 100%
浏览 13
已结题

c++一级下标计数房间数量

谁来帮我看一看?
房间数量
有n头奶牛,第i头奶牛的身高是h[i]。身高相同的所有奶牛都住在同一个房间。问需要多少个房间才能安排好所有奶牛的住宿。

【输入格式】

接下来有n行,第i行是一个正整数h[i]。

【数据范围】

60%的数据: 1 <= n <= 1000, 1 <= h[i] <= 1000000。

80%的数据:1 <= n <= 100000, 1 <= h[i] <= 1000000。

100%的数据:1 <= n <= 100000, 1 <= h[i] <= 2000000000。

【输出格式】

一个整数。

【输入/输出例子1】

输入:

5

10 30 10 20 30

输出:

3

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-04-14 19:47
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!

    C++ 一级下标计数房间数量问题解答

    这个问题要求我们统计不同奶牛身高的数量,因为相同身高的奶牛会住在同一个房间。

    解题思路

    1. 我们需要统计所有不同的身高值的数量
    2. 可以使用集合(Set)数据结构来存储身高,因为集合会自动去重
    3. 最后输出集合的大小即可

    C++ 代码实现

    #include <iostream>
    #include <unordered_set>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        
        unordered_set<int> unique_heights;
        
        for (int i = 0; i < n; ++i) {
            int h;
            cin >> h;
            unique_heights.insert(h);
        }
        
        cout << unique_heights.size() << endl;
        
        return 0;
    }
    

    代码说明

    1. 使用 unordered_set 来存储不同的身高值,因为它具有O(1)的平均插入和查找时间复杂度
    2. 读取每个奶牛的身高并插入到集合中
    3. 集合会自动处理重复值,所以最终集合的大小就是不同身高的数量
    4. 输出集合的大小即为需要的房间数量

    复杂度分析

    • 时间复杂度:O(n),因为每个插入操作平均是O(1)
    • 空间复杂度:O(n),最坏情况下所有身高都不同

    示例解释

    对于输入示例:

    5
    10 30 10 20 30
    

    不同的身高值为10、20、30,所以输出3。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月14日