C语言 为什么错了?通过不了 蒜头君手上有个长度为 n的数组 A.由于数组实在太大了,所以蒜头君

蒜头君手上有个长度为 nn 的数组 AA。由于数组实在太大了,所以蒜头君也不知道数组里面有什么数字,所以蒜头君会经常询问整数 xx 是否在数组 AA 中。输入格式第一行输入两个整数 nn 和 mm,分别表示数组的长度和查询的次数。接下来一行有 nn 个整数 a_ia i​ 。接下来 mm 行,每行有 11 个整数 xx,表示蒜头君询问的整数。输出格式对于每次查询,如果可以找到,输出"YES",否则输出"NO"。数据范围1 \le n, m \le 10^5, 0 \le x \le 10^61≤n,m≤10 5 ,0≤x≤10 6 。输出时每行末尾的多余空格,不影响答案正确性样例输入 复制10 51 1 1 2 3 5 5 7 8 9014910样例输出 复制NOYESNOYESNO为什么错了?#include <stdio.h>main(){ int m,n,a[100000],x,i,j,pos; scanf("%d %d",&n,&m); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<m;i++) { scanf("%d",&x); pos=fun(a,n,x); if(pos!=-1) printf("YES\n"); else printf("NO\n"); }}int fun(int a[],int n,int x){ int low=0,high=n-1,mid; while(low<=high) { mid=(high+low)/2; if(x<a[mid]) high=mid-1; else if(x>a[mid]) low=mid+1; else return(mid); } return -1;}

第1个回答  2019-05-08
YES和NO没有错。

只能在有序的数组上,因为样例给的是有序数列,所以你可能没有考虑到无序的情况,应该先对A数组进行排序再进行查找。本题可以使用。本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网