题目描述
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文章来源:https://www.toymoban.com/news/detail-743515.html
输出
5文章来源地址https://www.toymoban.com/news/detail-743515.html
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
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();
}
}
到了这里,关于蓝桥杯官网练习题(移动距离)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!