geohash编码
geohash編碼:geohash常用于將二維的經(jīng)緯度轉(zhuǎn)換為字符串,分為兩步:第一步是經(jīng)緯度的二進(jìn)制編碼,第二步是base32轉(zhuǎn)碼。
此題考察緯度的二進(jìn)制編碼:算法對緯度[-90,90]通過二分法進(jìn)行無限逼近(取決于所需精度,本題精度為6)。注意,本題進(jìn)行二分法逼近過程中只采用向下取整來進(jìn)行二分,針對二分中間值屬于右區(qū)間。算法舉例如下: 針對緯度為80進(jìn)行二進(jìn)制編碼過程:
1) 區(qū)間[-90, 90]進(jìn)行二分為[-90, 0),[0, 90],成為左右區(qū)間,可以確定80為右區(qū)間,標(biāo)記為1;
2) 針對上一步的右區(qū)間[0, 90]進(jìn)行二分為[0, 45),[45, 90],可以確定80是右區(qū)間,標(biāo)記為1;
3) 針對[45, 90]進(jìn)行二分為[45, 67),[67,90],可以確定80為右區(qū)間,標(biāo)記為1;
4) 針對[67,90]進(jìn)行二分為[67, 78),[78,90],可以確定80為右區(qū)間,標(biāo)記為1;
5) 針對[78, 90]進(jìn)行二分為[78, 84),[84, 90],可以確定80為左區(qū)間,標(biāo)記為0;
6) 針對[78, 84)進(jìn)行二分為[78, 81), [81, 84),可以確定80為左區(qū)間,標(biāo)記為0;
輸入描述:
輸入包括一個整數(shù)n,(-90 ≤ n ≤ 90)輸出描述:
輸出二進(jìn)制編碼 示例1輸入
80輸出
111100#include <iostream> #include <string>//這一句有了才能編譯s1.append(s2);cout<<s1<<endl; #include <cstring> using namespace std; int main(){int num,left = -90,right = 90,mid;string res;cin>>num;for(int i=0;i<6;i++){mid = (left + right )/2;if(mid <= num){left = mid;res.append("1");}else{right = mid;res.append("0");}}//forcout<<res<<endl; return 0; }//5 //100010 //請按任意鍵繼續(xù). . .//-53 //001101 //請按任意鍵繼續(xù). . .//0 //100000 //請按任意鍵繼續(xù). . .//90 //111111 //請按任意鍵繼續(xù). . .//-90 //000000 //請按任意鍵繼續(xù). . .
總結(jié)
- 上一篇: MindManager2022高效好用办
- 下一篇: sublime生成html模板,subl