剑指Offer——网易笔试之解救小易
?
?
知識(shí)要點(diǎn)
首先介紹一下曼哈頓,曼哈頓是一個(gè)極為繁華的街區(qū),高樓林立,街道縱橫,從A地點(diǎn)到達(dá)B地點(diǎn)沒(méi)有直線路徑,必須繞道,而且至少要經(jīng)C地點(diǎn),走AC和 CB才能到達(dá),由于街道很規(guī)則,ACB就像一個(gè)直角3角形,AB是斜邊,AC和CB是直角邊,根據(jù)畢達(dá)格拉斯(勾股)定理,或者向量理論,都可以知道用AC和CB可以表達(dá)AB的長(zhǎng)度。
在早期的計(jì)算機(jī)圖形學(xué)中,屏幕是由像素構(gòu)成,是整數(shù),點(diǎn)的坐標(biāo)也一般是整數(shù),原因是浮點(diǎn)運(yùn)算很昂貴,很慢而且有誤差,如果直接使用AB的距離,則必須要進(jìn)行浮點(diǎn)運(yùn)算,如果使用AC和CB,則只要計(jì)算加減法即可,這就大大提高了運(yùn)算速度,而且不管累計(jì)運(yùn)算多少次,都不會(huì)有誤差。因此,計(jì)算機(jī)圖形學(xué)就借用曼哈頓來(lái)命名這一表示方法。
曼哈頓距離:兩點(diǎn)在南北方向上的距離加上在東西方向上的距離,即d(i,j)=|xi-xj|+|yi-yj|。對(duì)于一個(gè)具有正南正北、正東正西方向規(guī)則布局的城鎮(zhèn)街道,從一點(diǎn)到達(dá)另一點(diǎn)的距離正是在南北方向上旅行的距離加上在東西方向上旅行的距離。
通過(guò)分析下面的題目,可知其可以應(yīng)用曼哈頓距離計(jì)算至(1,1)點(diǎn)最近的點(diǎn),依據(jù)曼哈頓距離即可計(jì)算出結(jié)果值。
代碼如下:
1 /** 2 * 解救小易 3 有一片1000*1000的草地,小易初始站在(1,1)(最左上角的位置)。小易在每一秒會(huì)橫向或者縱向移動(dòng)到相鄰的草地上吃草(小易不會(huì)走出邊界)。 4 大反派超超想去捕捉可愛(ài)的小易,他手里有n個(gè)陷阱。第i個(gè)陷阱被安置在橫坐標(biāo)為xi ,縱坐標(biāo)為yi 的位置上,小易一旦走入一個(gè)陷阱,將會(huì)被超超捕捉。 5 你為了去解救小易,需要知道小易最少多少秒可能會(huì)走入一個(gè)陷阱,從而提前解救小易。 6 輸入描述: 7 第一行為一個(gè)整數(shù)n(n ≤ 1000),表示超超一共擁有n個(gè)陷阱。 8 第二行有n個(gè)整數(shù)xi,表示第i個(gè)陷阱的橫坐標(biāo) 9 第三行有n個(gè)整數(shù)yi,表示第i個(gè)陷阱的縱坐標(biāo) 10 保證坐標(biāo)都在草地范圍內(nèi)。 11 12 輸出描述: 13 輸出一個(gè)整數(shù),表示小易最少可能多少秒就落入超超的陷阱 14 15 輸入例子: 16 3 17 4 6 8 18 1 2 1 19 輸出例子: 20 3 21 思路: 22 計(jì)算最短距離 23 */ 24 25 #include <iostream> 26 #include <vector> 27 using namespace std; 28 29 int main(void){ 30 int trapNum; 31 32 while (cin >> trapNum){ 33 if (trapNum <= 0 || trapNum > 1000) 34 continue; 35 // vector<int> dx; 36 // vector<int> dy; 37 vector<int> dx(trapNum);//指定容器大小,否則會(huì)溢出 38 vector<int> dy(trapNum); 39 for (int i = 0; i < trapNum; i++) 40 cin >> dx[i]; 41 for (int i = 0; i < trapNum; i++) 42 cin >> dy[i]; 43 44 int result = 99999; 45 //枚舉一遍維護(hù)最小值 46 for (int i = 0; i < trapNum; i++){ 47 int length = (dx[i] - 1) + (dy[i] - 1); 48 if (length < result) 49 result = length; 50 } 51 cout << result << endl; 52 } 53 return 0; 54 }?
總結(jié)
以上是生活随笔為你收集整理的剑指Offer——网易笔试之解救小易的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: free查看可用缓存
- 下一篇: UVa 10047,独轮车