题目描述
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 两楼间最短移动距离。
输入输出样例
示例1
输入
6 2 8
输出
4
示例2
输入
4 7 20
输出
5
运行限制
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int w=scan.nextInt();int m=scan.nextInt();int n=scan.nextInt();int mhang=0;int nhang=0;int mlie=0;int nlie=0;int ans=0;if(m%w==0){mhang=m/w;}else{mhang=(m/w)+1;}if(n%w==0){nhang=n/w;}else{nhang=(n/w)+1;}if(mhang%2==0){mlie=w*mhang-m+1;}else{mlie=m-(w*(mhang-1));}if(nhang%2==0){nlie=w*nhang-n+1;}else{nlie=n-(w*(nhang-1));}ans=Math.abs(mhang-nhang)+Math.abs(mlie-nlie);System.out.println(ans);scan.close();}
}
-
- 最大运行时间:1s
- 最大运行内存: 256M