家人们我不理解
查看原帖
家人们我不理解
464570
lamp_forever楼主2021/10/18 08:42

为什么

if(k<=a[mid])

改成

else

就对了啊 下面为WA的程序

#include<iostream>
#include<cstdio>
using namespace std;
int n,a[1000005],m,q;
int search(int a[],int zuo,int you,int k)
{
	if(zuo==you)
	{
		if(a[zuo]==k)
		{
			return zuo;
		}
		else
		{
			return -1;
		}
	}
	int mid=(zuo+you)/2;
	if(k>a[mid])	search(a,mid+1,you,k);
	if(k<=a[mid])	search(a,zuo,mid,k);
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	while(m--)
	{
		cin>>q;
		cout<<search(a,1,n,q)<<" ";
	}
}

下面为AC的程序

#include<iostream>
#include<cstdio>
using namespace std;
int n,a[1000005],m,q;
int search(int a[],int zuo,int you,int k)
{
	if(zuo==you)
	{
		if(a[zuo]==k)
		{
			return zuo;
		}
		else
		{
			return -1;
		}
	}
	int mid=(zuo+you)/2;
	if(k>a[mid])	search(a,mid+1,you,k);
	else	search(a,zuo,mid,k);
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	while(m--)
	{
		cin>>q;
		cout<<search(a,1,n,q)<<" ";
	}
}

我不理解,我不理解啊家人们

2021/10/18 08:42
加载中...