这期我会做得详细亿点
你玩过猜数游戏吗?
如果答案在1~100之间,你能在10次之间猜出来吗?
cout<<rand()%100-1;
40
--------------------------------
Process exited after 0.532 seconds with return value 0
请按任意键继续. . .
我先猜50:大了
我猜25:小了
我再猜38:小了
我猜44:大了
我猜42:大了
我猜40:对了
你看懂了吗?
实际上就是不停分一半
也就是上期的:
q=(left+right)/2;
可以看看这个:http://cqyc.com:8888/files/algorithm_show.htmlhttp://cqyc.com:8888/files/algorithm_show.html
递归什么的都是次要的,在递归中长这样
return erfenchazhao(l,r+1);
最后,就看看代码吧
#include<bits/stdc++.h>
using namespace std;
long long x[100000];
int efcz(long long s[],long long l,long long r,long long b,long long z)
{
if(s[b]==z)
{
return b+1;
}
if(s[b]>z) return efcz(s,l,b-1,(l+r)/2,z);
if(s[b]<z) return efcz(s,b+1,r,(l+r)/2,z);
}
int main()
{
long long v,y;
cin>>v>>y;
for(int l=0;l<v;l++)
{
cin>>x[l];
}
sort(x,x+v);//这里是升序还是降序看情况
cout<<efcz(x,0,v-1,(v-1)/2,y);
return 0;
}