TX2017秋招笔试题之geohash编码
来源:互联网 发布:金山软件股价 编辑:程序博客网 时间:2024/05/16 17:00
问题描述:
geohash编码:geohash常用于将二维的经纬度转换为字符串,分为两步:第一步是经纬度的二进制编码,第二步是base32转码。
此题考察纬度的二进制编码:算法对纬度[-90, 90]通过二分法进行无限逼近(取决于所需精度,本题精度为6)。
注意,本题进行二分法逼近过程中只采用向下取整来进行二分,针对二分中间值属于右区间。算法举例如下: 针对纬度为80进行二进制编码过程:
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;
输入描述:
输入包括一个整数n,(-90 ≤ n ≤ 90)
输出描述:
输出二进制编码
示例1
输入
80
输出
111100
————————————————————————————————————————————————————————————————————————————————————
求解思路:没啥说的,二分法,看清题,题目中精度要求为6,直接循环,不解释
代码实现:
#include<iostream>using namespace std;int BSerch(int n);int main(){ int N; do { cin>>N; BSerch(N); }while(N>90||N<=-90); return 0;}int BSerch(int n){ int m,left=-90,right=90; for(int i=0;i<6;i++) { m=(left+right)/2; if(n<m) { right=m; cout<<0; } else if(n>=m) { left=m; cout<<1; } } cout<<endl; return 0;}
阅读全文
0 0
- TX2017秋招笔试题之geohash编码
- TX2017秋招笔试题之geohash编码
- 腾讯2017秋招笔试编程题--geohash编码
- 腾讯2017秋招笔试[编程题] geohash编码
- 笔试题:geohash编码
- 腾讯2017秋招笔试编程题(四)----geohash编码
- 腾讯2017秋招笔试编程题:geohash [python]
- 百度2012校招笔试题之位数和编码
- 腾讯2017秋招笔试编程题--编码
- Tencent2017秋招笔试题--求编码的index
- 腾讯2017秋招笔试编程题_编码
- 腾讯2017秋招笔试编程题:编码 [python]
- 笔试之网易秋招
- geohash编码 (腾讯2017校招开发工程师试卷一)
- 2015秋招笔试题之程序设计题集锦
- 腾讯2017秋招笔试编程题之素数
- geohash编码
- geohash编码
- 神经网络学习(三)
- Kafka Zero-Copy 使用分析
- Hive的安装配置和使用Java连接
- Recurrent visual attention
- 【HDU】 1969 Pie
- TX2017秋招笔试题之geohash编码
- Pointers on C——11 Dynamic Memory Allocation.2
- hibernate4.3获取session的方法
- 欢迎使用CSDN-markdown编辑器
- react-native-redux 简易教程
- Two Sum
- python机器学习及实战代码13-16,程序运行时出现提醒及修改
- 中国地理-一些知识的总结
- Pointers on C——11 Dynamic Memory Allocation.3