求助,全是WA

P2249 【深基13.例1】查找

CloseAI @ 2023-04-19 18:07:18

#include<iostream>
#include<algorithm>
using namespace std;
int main() {
    int m,n;
    cin>>m>>n;
    int *a=new int[m+1];
    int *b=new int[n];
    for(int i=1; i<=m; i++)
        cin>>a[i];
    for(int i=0; i<n; i++)
        cin>>b[i];
    for(int i=0; i<n;i++) {
        int ans=lower_bound(a+1,a+1+m,b[i])-a;
        if(a[ans]!=b[i])
            cout<<-1;
        else cout<<ans;
        if(i!=n-1)
        cout<<ends;
    }
    delete[] a;
    delete[] b;
    return 0;
}

by JYW2011 @ 2023-04-19 18:22:12

输出格式错误,应该是空格,而不是 tab。 特判没有考虑全面。如果修改为使用 if 判读,应该是 if (a[ans] == b[i]) cout << ans; else cout << -1;。


by JYW2011 @ 2023-04-19 18:22:56

@eam3939


by __er @ 2023-04-19 18:42:15

@eam3939 建议不要用 new,申请那么大一块动态内存,随便卡卡就炸了

这题不是 new 的问题,以后打大型比赛别用


by CloseAI @ 2023-04-20 17:37:29

@JYW2011 哦哦哦,原来是这样,太感谢了


by CloseAI @ 2023-04-20 17:39:42

@__er 这样啊,主要是我刚学了动态申请内存,想试一试,谢谢提醒。


|