C語言 藍橋杯 移動距離(2015 B組)

2021-10-24 17:11:15 字數 1309 閱讀 5085

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,需要求出它們之間的最短移動距...