F 樓房的距離

2021-09-11 20:51:44 字數 777 閱讀 6174

某小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號1,2,3…。

當排滿一行時,從下一行相鄰的樓往反方向排號。比如:當小區排號寬度為 6 時,開始情形如下:

1 2 3 4 5 6

12 11 10 9 8 7

13 14 15 …

現在已知小區的寬度 w。問你兩個樓號 n 和 m 對應的樓房之間的最短移動距離(只能上下左右移動)。

輸入格式

輸入第一行乙個整數 w,表示小區的寬度。第二行輸入兩個整數 n,m,表示兩個樓號。

輸出格式

輸出乙個整數表示兩個樓房的距離。

題解:我們可以模擬一遍,找到每個點的具體座標,然後他們之間最短距離就 是 x 座標的距離加上 y 座標的距離。 如果我們是按照:

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 …

這樣計算,n的座標為 (n / w, n % w)(下標從0開始),那麼如果是奇數行, 只需要把y翻轉一下即可。

#include

#include

using

namespace std;

typedef

long

long

int ll;

struct point

;ll w;

point getpoint

(ll id)

return res;

}int

main()

樓房的距離

x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3 當排滿一行時,從下一行相鄰的樓往反方向排號。比如 當小區排號寬度為6時,開始情形如下 1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 我們的問題是 已知了兩個樓號m和n,需要求出它們之間的最短移動距...

關於 0x3f3f3f3f 的問題

0x3f3f3f3f是乙個很有用的數值,它是滿足以下兩個條件的最大整數。1 整數的兩倍不超過 0x7f7f7f7f,即int能表示的最大正整數。2 整數的每8位 每個位元組 都是相同的。我們在程式設計中經常需要使用 memset a,val,sizeof a 初始化乙個陣列a,該語句把數值 val ...

歐式距離與曼哈頓距離的區別以及曼哈頓距離的應用

歐氏距離就是我們最常用的兩點之間的直線距離。以二維空間為例,兩點 x1,y1 x2,y2 之間的歐式距離為 曼哈頓距離則表示兩個點在標準座標系上的絕對軸距之和。還是以二維空間為例,兩點 x1,y1 x2,y2 之間的曼哈頓距離為 用一張圖來區分一下兩者 圖中綠線是歐氏距離,紅線是曼哈頓距離,藍線和黃...