藍橋杯 移動距離

2021-07-30 05:54:01 字數 1421 閱讀 3210

藍橋杯2015第六屆c語言真題 第8題:移動距離

8、移動距離

x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3...

當排滿一行時,從下一行相鄰的樓往反方向排號。

比如:當小區排號寬度為6時,開始情形如下:

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 7 20

則,程式應該輸出:

本來用迴圈寫了好久,後來才發現有簡便的方法

#include #include int main()

//用迴圈做的

#include #include using namespace std;

int a[1010][1010];

int main()

if(a[i][j] == n)

} ++i;

++j;

while(j > 1)

if(a[i][j] == n)

} ++i;

--j;

if(count >= m && count >= n)

break;

}// for(i = 1;i <= 1000;i ++)

// // printf("\n");

// if(i >(max(m,n) / w))

// break;

// }

// printf("m(%d,%d) n(%d,%d)\n",mx,my,nx,ny);

printf("%d\n",abs(mx - nx) + abs(my - ny));

return 0;

}

資源約定:

峰值記憶體消耗 < 256m

cpu消耗  < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

注意: main函式需要返回0

注意: 只使用ansic/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。

注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

藍橋杯 移動距離

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

藍橋杯 移動距離

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