骑兔看夕阳 2022-07-23 11:04 采纳率: 100%
浏览 46
已结题

求各位程序员帮助,这个代码没有问题呀

【题目描述】
给出若干个整数,询问其中是否有一对数的和等于给定的数。

【输入】
第一行是整数n(0 < n ≤ 100,000),表示有n个整数。

第二行是n个整数。整数的范围是在0到108之间。

第三行是一个整数m(0≤m≤230),表示需要得到的和。

【输出】
若存在和为m的数对,输出两个整数,小的在前,大的在后,中间用单个空格隔开。若有多个数对满足条件,选择数对中较小的数更小的。若找不到符合要求的数对,输出一行No。

【输入样例】
4
2 5 1 4
6
【输出样例】
1 5

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stdio.h>
#define N 100001
using namespace std;
long long n, m, a[N];
bool judge(int x)
{
    int left = 0, right = n - 1;
    while (left <= right)
    {
        int mid =(left + right) / 2;
        if (x > a[mid])
        {
            left = mid+1;
        }
        if (x < a[mid])
        {
            right = mid;//1 2 4 5
        }
        if (x == a[mid])
        {
            return true;
        }
    }
    return false;
}
int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    cin >> m;
    sort(a, a + n);//进行排序
    int tmp = m;
    for (int i = 0; i < n; i++)
    {    
        if (tmp - a[i] != a[i])
        {
            if (judge(tmp - a[i]) == true)
            {
                cout << a[i] << " " << tmp - a[i] << endl;
                return 0;
            }
        }
        else
        {
            continue;
        }
    }
    cout << "No" << endl;
    return 0;
}

这段代码为啥AC不了

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-07-23 12:43
    关注

    为什麽循环中else时要continue呢?题目没有说m不可以是两个相等数的和阿
    允许最多10万个整数,但整数值在0-108之间,那么只要n值大于109,那么必然有整数是相等的,那么你if(tmp-a[i] != a[i])就有问题
    比如输入n为4,然后4个数是1 2 2 4,输入m为4,这样最后输出的应该是2 2。但你的代码输出的是NO

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

报告相同问题?

问题事件

  • 系统已结题 7月31日
  • 已采纳回答 7月23日
  • 创建了问题 7月23日

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路