求助

P2249 【深基13.例1】查找

liuweida0330 @ 2023-12-13 13:11:32

为什么给的样例都对了却WA了

#include<bits/stdc++.h>
using namespace std;
long long a,b,c[100000000],d;
int sum(int x){
    int left=1,right=b,f;
    while(left<=right){
        f=(left+right)/2;
        if(c[f]==x){
            x=f;
            return x;
        }
        else if(c[f]>x){
            right=f-1;
        }
        else if(c[f]<x){
            left=f+1;
        }

    }

    return -1;
}
int main(){

    cin>>a>>b;
    for(int i=1;i<=a;i++){
        cin>>c[i];
    }
    for(int i=1;i<=b;i++){
        cin>>d;
        int ans=sum(d);
        cout<<ans<<" ";
    }
}

by wumingwei @ 2023-12-13 13:34:29

@liuweida0330

两个问题

  1. sum函数中的right应该初始化为a
  2. 题目说"要求输出这个数字在序列中第一次出现的编号"

by liuweida0330 @ 2023-12-14 13:00:07

@wumingwei 感谢


|