geohash编码
来源:互联网 发布:观相 知乎 编辑:程序博客网 时间:2024/06/05 15:18
//腾讯校招笔试题
/*
geohash 编码: geohash 常用于将二维的经纬度转换为字符串,分为两步:第一步是经纬度的二进制编码,第二部是 base32 转码。
此题考察唯独的二进制编码:算法对维度 [-90,90] 通过二分法进行无限逼近(取决于所需精度,本题精度为 6 )。注意,本题进行二分法逼近过程中只采用向下取整来进行二分,针对二分中间值属于右区间。算法举例如下:
(1) 区间 [-90,90] 进行二分为 [-90,0),[0,90] ,成为左右区间,可以确定 80 为右区间,标记为 1 ;
(2) 针对上一步的右区间 [0,90] 进行二分为 [0,45),[45,90] ,可以确定 80 是右区间,标记为 1 ;
(3) 针对 [45,90] 进行二分为 [45,67),[67,90] ,可以确定 80 为右区间,标记为 1 ;
(4) 针对 [67,90] 进行二分为 [67,78),[78,90] ,可以确定 80 位右区间,标记为 1 ;
(5) 针对 [78,90] 进行二分为 [78,84),[84,90] ,可以确定 80 位左区间,标记为 0 ;
(6) 针对 [78,84) 进行二分为 [78,81),[81,84) ,可以确定 80 位左区间,标记为 0 ;
已达精度要求,编码为 111100
样本输入: 80
样本输出: 111100
*/
/*
题目分析:题目要求很明确,对一个数组二分查找,找寻数字所在的区间,如果是左区间,标记为0,如果为右区间,标记为1.
*/
#if 1#include<iostream>using namespace std;string Solve(int n){string num;int start = -90;int end = 90;int mid = 0;for(int i = 0;i<6&&start<end;i++){mid = start+(end-start)/2;if(n<mid){end = mid;num+='0';}else{start = mid;num+='1';}}return num;}int main(){int n;cin>>n;string ret = Solve(n);cout<<ret<<endl;}#endif
阅读全文
0 0
- geohash编码
- geohash编码
- geohash地理编码
- 笔试题:geohash编码
- GeoHash一·编码解码
- hihocoder 1436——GeoHash一·编码解码(Geohash)
- geohash
- geohash
- GEOHash
- geoHash
- geohash
- Geohash
- GeoHash
- geohash
- GeoHash
- GeoHash
- GeoHash
- JAVA实现空间索引编码(GeoHash)
- 关于linux中shell的一些小问题解决办法
- STM32 BootLoader设计
- JMeter常用插件的安装和使用
- Python:正则表达式(一)
- hdu6171-(双向bfs-hash表)
- geohash编码
- poj1274 The Perfect Stall 二分图最大匹配模板题 匈牙利算法BFS
- 教你彻底学会动态规划——入门篇
- Hbase 数据迁移的常见方式(四)
- 【招聘系列2】Hive面试问题
- 关于线程的30个问题
- Java多线程基础
- 开发者所需要知道的 iOS 11 SDK 新特性
- 基于Jquery插件Uploadify实现实时显示进度条上传图片