zxtzxtttt 2024-03-03 23:23 采纳率: 0%
浏览 15

c++有一个若干整数构成的序列,里面包含了一些重复值,去除其中重复的值,并输出。

c++语言解答
题目描述
有一个若干整数构成的序列,里面包含了一些重复值,去除其中重复的值,并输出。
(不知道具体输入多少数字,怎么最终中断输入?)

输入
输入若干个整数,数据个数不多于100。这些整数构成一个序列。

输出
输出剔除重复值后的整数序列。数据按原有位置输出,如果是重复值,应该是按第一次出现的位置输出。输出结果占一行,每两个数之间有一个空格,最后一个数后面没有空格,行末有换行。具体参见样本输出。

样例输入
66 -3 12 11 11 7 8 9 12 7 7 16 8 17

样例输出
66 -3 12 11 7 8 9 16 17

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-03-03 23:23
    关注

    zxtzxtttt 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    题目要求去除整数序列中的重复值,并按原有位置输出。输入的整数个数不多于100,不需要事先知道具体的输入个数,只要在输入时能够确定输入的终止条件即可。

    解决这个问题的一种常用方法是使用哈希表。具体的解决方案如下:

    1. 创建一个空的哈希表,用于存储已经出现过的整数。
    2. 读入第一个整数,将其插入到哈希表中,并输出该整数。
    3. 依次读入剩下的整数,对于每个整数:
      • 如果该整数在哈希表中已经存在,说明它是重复值,直接跳过。
      • 如果该整数不在哈希表中,将其插入到哈希表中,并输出该整数。
    4. 完成输入之后,输出换行符,表示输出结束。

    下面是用C++代码实现的示例:

    #include <iostream>
    #include <unordered_set>
    using namespace std;
    
    int main() {
        unordered_set<int> hashSet;
        int num;
        
        while (cin >> num) {
            if (hashSet.find(num) == hashSet.end()) {
                hashSet.insert(num);
                cout << num << " ";
            }
        }
        
        cout << endl;
        
        return 0;
    }
    

    注意:

    • 上述代码使用了unordered_set类来作为哈希表,该类在C++标准库中以unordered_set头文件提供。
    • 输入的整数个数不多于100,因此我们可以使用cin来读取输入,而不需要事先知道输入的个数。

    希望以上内容能够对你有所帮助。如有需要,请提问。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月3日