为什么
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)<<" ";
}
}
我不理解,我不理解啊家人们