救命,全WA
查看原帖
救命,全WA
1082536
wnsndg楼主2024/3/17 20:45

啊哈哈~~~ 大佬帮我看看哪里有问题

//P2249 【深基13.例1】查找
#include<iostream>
using namespace std;
int n,m,q,a[1000005];
int find(int x){                  //二分查找函数 
	int l=1,r=n;                  //确定左右端点,左端点为第一个,右端点为最后一个 
	while(l<r){
		int mid=l+(r-l)/2;        //确定中点 
		if(a[mid]>=x) r=mid-1;    //如果当前比答案大,那就要搜索前半部分,右端点为中点减一 
		else l=mid+1;             //否则搜索后半部分,左端点为中点加一 
	}
	if(a[l]==x)return l;          //因为某种不知名原因,所以只能在外面判断是否找到,找到返回左端点(或右端点) 
	return -1;                    //没找到返回-1 
}
int main(){
	cin>>n>>m;                    //读入长度与访问次数 
	for(int i=1;i<=n;i++)
	    cin>>a[i];                //读入有序数列 
	for(int i=1;i<=m;i++){
		cin>>q;                   //输入访问数字 
		cout<<find(q)<<" ";       //通过二分函数来进行查找 
	}
	return 0;                     //华丽收工 
}
2024/3/17 20:45
加载中...