最短距離 x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號爲123.. 當排滿一行時,從下一行相鄰的被往反方向排號。 比如; 當區推號完磨爲6時,開始情形如下; 1 2 3

1、最短距離
x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號爲123..
當排滿一行時,從下一行相鄰的被往反方向排號。
比如; 當區推號完磨爲6時,開始情形如下;
1   2  3  4  5  6
12  11 10  9  8  7
13 14 15...
我們的問題是:已知了兩梭號m和n,需要求出它們之間的最短移動距離(不能料線方向移動)
輸入爲3個整數w m n,空格分開,都在1到1000範圍內
w爲排號寬度,m,n爲待計算的樓號。
要求輸出一個整數,表示mn 兩樓間最短移動距離。
例如:
用戶輸入:
6 8 2
則,程序應該輸出:4
再例如:
用戶輸入:
4 7 20

則,程序應該輸出:5

#include<stdio.h>

#include<math.h>

int dis(int w,int m,int n){

int a,b,x,y;

int d1,d2;

if (m%w!=0){

a=m/w;

}

else {

a=m/w-1;

}

if (n%w!=0){

b=n/w;

}

else {

b=n/w-1;

}

d1=fabs(a-b);

if (a%2==0){

x=m%w-1;

}

else {

x=w-m%w;

}

if (b%2==0){

y=n%w-1;

}

else {

y=w-n%w;

}

d2=fabs(x-y);

return d1+d2;

}

int main(){

int w,m,n,d;

scanf("%d%d%d",&w,&m,&n);

d=dis(w,m,n);

printf("%5d",d);

return 0;

}


發佈了75 篇原創文章 · 獲贊 128 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章