Demonroden 2024-06-10 17:15 采纳率: 100%
浏览 1
已结题

和为给定数 求帮助 不会smida

问题 G: 和为给定数

有没有人帮我看看

时间限制: 1 Sec 内存限制: 128 MB

提交: 1930 解决: 760

题目描述

给出若干个整数,询问其中是否有一对数的和等于给定的数。

输入

共三行:
第一行是整数n(0 < n <= 100,000),表示有n个整数。
第二行是n个整数。整数的范围是在0到10^8之间。
第三行是一个整数m(0 <= m <= 2^30),表示需要得到的和。

输出

若存在和为m的数对,输出两个整数,小的在前,大的在后,中间用单个空格隔开。

若有多个数对满足条件,选择数对中较小的数更小的。若找不到符合要求的数对,输出一行No。

样例输入

4
2 5 1 4
6

样例输出

1 5

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-06-10 17:16
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    这个问题是一个典型的哈希表应用场景,你可以使用C++来实现。以下是解决这个问题的一种方法,以及相应的代码示例:

    思路解释

    1. 首先,读取输入数据,包括整数个数n,整数列表和目标和m
    2. 使用一个哈希表(例如std::unordered_map)来存储已经读取的整数及其出现的次数。
    3. 遍历整数列表,对于每个整数x,检查m - x是否已经在哈希表中。如果在,说明找到了一对整数,它们的和等于m
    4. 每次找到一对整数时,检查这对整数是否满足题目中的输出要求(较小的数更小)。
    5. 如果找到了满足条件的数对,输出这对整数并结束程序。
    6. 如果遍历结束后没有找到任何满足条件的数对,输出"No"。

    C++代码示例

    #include <iostream>
    #include <unordered_map>
    #include <vector>
    #include <utility>
    
    int main() {
        int n;
        std::cin >> n;
        std::unordered_map<int, int> num_map;
        std::vector<int> nums(n);
        for (int i = 0; i < n; ++i) {
            std::cin >> nums[i];
            num_map[nums[i]]++;
        }
    
        int m;
        std::cin >> m;
        int min_smaller_num = -1;
        for (int i = 0; i < n; ++i) {
            int x = nums[i];
            int y = m - x;
            if (num_map.find(y) != num_map.end() && num_map[y] > 0) {
                if (min_smaller_num == -1 || x < min_smaller_num) {
                    min_smaller_num = x;
                    int pair_num = y;
                    std::cout << x << " " << pair_num << std::endl;
                    return 0;
                }
            }
        }
        std::cout << "No" << std::endl;
        return 0;
    }
    

    参考资料

    这段代码实现了题目要求的功能,使用了std::unordered_map来存储和查找整数,以及std::cinstd::cout来进行输入和输出。注意,这段代码没有进行错误检查,假设所有输入都是有效的。在实际应用中,你可能需要添加一些错误处理的逻辑。

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

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月10日

悬赏问题

  • ¥18 help me! 希望大家来看看 吉~
  • ¥15 C++显示超限兔子集结
  • ¥15 sql server 2012的下载出错
  • ¥15 图像识别用户软件开发
  • ¥20 类原生rom lineageos
  • ¥15 有没有会做中专,云计算,卷子的,有偿一百块
  • ¥15 HC32串口DMA循环发送数据
  • ¥15 Uni-App实现飞书授权登陆
  • ¥50 Qt应用中如何通过代码打开开发者工具devtools
  • ¥20 mpp硬解码h264转为yuv