x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。
其樓房的編號為 1,2,3…
當排滿一行時,從下一行相鄰的樓往反方向排號。
比如:當小區排號寬度為 6 時,開始情形如下:
1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 .....
我們的問題是:已知了兩個樓號 m 和 n,需要求出它們之間的最短移動距離(不能斜線方向移動)。
輸入格式
輸入共一行,包含三個整數 w,m,n,w 為排號寬度,m,n 為待計算的樓號。
輸出格式
輸出乙個整數,表示 m,n 兩樓間最短移動距離。
資料範圍
1≤w,m,n≤10000,
輸入樣例:
6 8 2
輸出樣例:
4
看到這個就很自然的想起來了二維陣列,建立乙個座標與數字的對映關係;
那我們就按照二維陣列的方法對他進行乙個簡單的轉換
把他看做是從0開始的(就讀入之後讓m-- ,n – 就可);
先來看行:x1 = m / w這樣就是得到行號
列號稍微的麻煩了一點,首先原本的列號是y1 = n % w
但是奇數行是從後往前的。所以加乙個特判,所有的奇數行給他翻轉一下
if(x1 % 2) y1 = w - 1 - y1;
**如下
#include
#include
using
namespace std;
int w, m, n;
intmain()
藍橋杯 移動距離
藍橋杯2015第六屆c語言真題 第8題 移動距離 8 移動距離 x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3.當排滿一行時,從下一行相鄰的樓往反方向排號。比如 當小區排號寬度為6時,開始情形如下 1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 ...
藍橋杯 移動距離
移動距離 1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 我們的問題是 已知了兩個樓號m和n,需要求出它們之間的最短移動距離 不能斜線方向移動 輸入為3個整數w m n,空格分開,都在1到10000範圍內 w為排號寬度,m,n為待計算的樓號。要求輸出乙個整數,表示m n 兩樓...
閒聊藍橋杯JAVA 移動距離
d 今晚做這一道題 移動距離 x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3.當排滿一行時,從下一行相鄰的樓往反方向排號。比如 當小區排號寬度為6時,開始情形如下 12 3456 1211109 871314 15.我們的問題是 已知了兩個樓號m和n,需要求出它們之間的...