d732.
二分搜尋法
| From: [114.45.93.126] |
發表日期
:
2012-03-04 14:35
這是我的程式碼
#include <cstdlib>
#include <iostream>
using namespace std;
int n,k,x,i,f,m,e,a[1000000];
void bs(int c)
{
m=(f+e)/2;
if(c==a[m]){cout<<m+1<<endl;}
else if(c>a[m]){
if(f==e){cout<<0<<endl;}
else{
f=m+1;
bs(c);
}
}
else if(c<a[m]){
if(f==e){cout<<0<<endl;}
else{
e=m-1;
bs(c);
}
}
}
int main()
{
cin>>n>>k;
for(i=0 ; i<n ; i++){cin>>a[i];}
while(k--){
cin>>x;
f=0;
e=n-1;
if(x>a[e]||x<a[f]){cout<<0<<endl;}
else{bs(x);}
}
return 0;
}
為什麼我都逾時TLE??
有沒有較快的解題方法