蓝桥杯官网练习题(移动距离)

题目描述

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

运行限制

java 复制代码
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
相关推荐
007php00711 小时前
某游戏互联网大厂Java面试深度解析:Java基础与性能优化(一)
java·数据库·面试·职场和发展·性能优化·golang·php
小欣加油13 小时前
leetcode 3318 计算子数组的x-sum I
c++·算法·leetcode·职场和发展
summer__777714 小时前
33-蓝桥杯报名通知
蓝桥杯
sheepfagdng18 小时前
求职专栏-【面试-自我介绍】
面试·职场和发展
程序员三藏19 小时前
接口自动化测试框架搭建详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
被AI抢饭碗的人19 小时前
算法题(254):灾后重建
算法·leetcode·职场和发展
音符犹如代码21 小时前
ArrayList常见面试题二
java·开发语言·面试·职场和发展
关于不上作者榜就原神启动那件事1 天前
14届蓝桥杯省赛c++b组,全题题解
职场和发展·蓝桥杯
yoke菜籽1 天前
面试150——字典树
面试·职场和发展