8. 移動距離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 兩樓間最短移動距離。
例如:使用者輸入:
6 8 2
則,程式應該輸出:
4再例如:
使用者輸入:
4 7 20
則,程式應該輸出:
5資源約定:
峰值記憶體消耗 < 256m
cpu消耗 < 1000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。
所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。
注意: main函式需要返回0
注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。
注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。
提交時,注意選擇所期望的編譯器型別。
【分析】根據給出的例子可知用兩點間最短距離公式計算
由題意,求出點m和點n的位置座標(mx, my)和(nx, ny),然後使用公式d=|nx-mx|+|ny-my|求解,d即所求結果。
注意對行號進行奇偶性判斷,然後確定列號(行號(從1開始)為偶數時,列號從右向左排;否則從左向右排)。
#include
#include
#define max 10000
int arr[max]
[max]
;int
main()
}else}if
(sum > a)
break;}
//找到m,n在陣列裡對應的值所對應的下標
for(
int i =
0;i < a / w +
1;i ++)if
(arr[i]
[j]== n)}}
int l;
//進行運算(兩點之間最短距離公式|x1 - x2| + |y1 - y2|)
l =abs(mx - nx)
+abs
(my - ny)
;printf
("%d"
,l);
return0;
}
藍橋杯 2015 B組 C C 8 移動距離
移動距離 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 兩樓...
藍橋杯2015B組C
1 獎券數目 題目 有些人很迷信數字,比如帶 4 的數字,認為和 死 諧音,就覺得不吉利。雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某 活動的獎券號碼是5位數 10000 99999 要求其中不要出現帶 4 的號碼,主辦單位請你計算一下,如果任何兩張獎券不重號,最多可發出獎券多少張。請提交...
藍橋杯 2015初賽 移動距離
x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3 當排滿一行時,從下一行相鄰的樓往反方向排號。比如 當小區排號寬度為6時,開始情形如下 1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 我們的問題是 已知了兩個樓號m和n,需要求出它們之間的最短移動距...