1. 程式人生 > >騰訊:geohash編碼

騰訊:geohash編碼

按照題意進行二分法就好了。

#include<iostream>
#include<algorithm>
using namespace std;
int cod[6],stc;					//cod用來存geohash編碼
int binary_search(int num); 
int main()
{
	int num;
	while(cin>>num)
	{
		binary_search(num);
		for(int i=0;i<stc;++i)
		{
			cout<<cod[i];	
		}	
		cout<<endl;
	}	
	return 0;
} 
int binary_search(int num)					//按照題意進行二分
{
	stc=0;
	int cnt=6;
	int low=-90,high=90;
	int mid=(low+high)/2;
	while(cnt--)
	{
	//	cout<<low<<" "<<high<<endl;		檢驗邊界
		mid=(low+high)/2;
		if(num>=mid) 
		{
			low=mid;			
			cod[stc++]=1;			
		}
		else if(num<mid) 
		{
			high=mid;
			cod[stc++]=0;	
		}	
	}
	return 0;
}