樓號m和n之間的最短移動距離(C語言)

2021-09-11 05:56:55 字數 595 閱讀 2726

[問題描述]

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

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

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

1 2 3 4 5 6

12 11 10 9 8 7

13 14 15 …

我們的問題是:已知了兩個樓號m和n,需要求出它們之間的最短移動距離(不能斜線方向移動)

輸入為3個整數w m n,空格分開,都在1到10000範圍內

要求輸出乙個整數,表示m n 兩樓間最短移動距離。

[樣例輸入]

6 8 2

[樣例輸出]

4[樣例輸入]

4 7 20

[樣例輸出]5*/

#includeint abs(int i)

else }

int main()

else

if(i2%2==0)

else

printf("\n%d",abs(i1-i2)+abs(j1-j2));

return 0;

}

Floyd(各對頂點之間的最短距離)

我們其實可以求n次dijkstra,就可以求出各對頂點的最短路了。但是這不是重點,有乙個比他更清晰易懂的演算法 floyd 假設從i到j的最短路徑上要經過若干個頂點,這些中間頂點中最大的頂點編號為k,最小的頂點為t,因此要求算dist i j 的最小值,那麼只需要求算dist i s dist s ...

隨機生成零到n之間的m個數

隨機生成0到n之間的m個數 如何用隨機數生成0到n之間的m個不重複的數 1 最直接的方法就是先隨機生成乙個0到n之間的數,判斷這個數是否已被選上,如果以前沒選過,則選上,如果以前已選,則丟棄 void common int n,int m int randnum int malloc n sizeo...

輸出m到n之間的所有Fibonacci數

問題描述 輸入2個正整數m和n m 1,n 10000 輸出m到n之間所有的fibonacci數fibonacci數列 第一項起 1,1,2,3,5,8,13,21 輸入形式 從鍵盤輸入2個整數m和n,以空格分隔。輸出形式 輸出m到n之間所有的fibonacci 數,以空格分隔。樣例輸入1 20 1...