joewang @ 2023-07-28 22:46:03
本人蒟蒻,啥也不会,求大佬帮忙
#include <bits/stdc++.h>
using namespace std;
long long n,m,a[1000010],b[100010];
long long fun(long long l,long long r,long long t)
{
long long mid=(l+r)/2;
if(l>r)
{
return -1;
}
if(a[mid]<t)
{
fun(mid+1,r,t);
}
else if(a[mid]>t)
{
fun(l,mid-1,t);
}
else if(a[mid-1]==t)
{
fun(l,mid-1,t);
}
else
{
return mid;
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=m;i++)
{
cin>>b[i];
}
for(int i=1;i<=m;i++)
{
if(i!=1)
{
cout<<" ";
}
cout<<fun(1,n,b[i]);
}
cout<<endl;
return 0;
}
by Legsi @ 2023-07-29 22:02:46
要求输出这个数字在序列中第一次出现的编号 注意:是第一次
by joewang @ 2023-07-31 19:50:27
else if(a[mid-1]==t)
{
fun(l,mid-1,t);
}
不是判断了吗???
by HKaneW @ 2023-08-12 17:42:57
如果查找的数字是0, 那么mid=1时, a[mid-1]=0
by joewang @ 2023-10-03 08:24:57
@HKaneW 谢谢大佬,AC了