蓝桥杯普及 移动距离

题目描述

X 星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为 1,2,3,⋯1,2,3,⋯ 。

当排满一行时,从下一行相邻的楼往反方向排号。

比如:当小区排号宽度为 66 时,开始情形如下:

1  2  3  4  5  6
12 11 10 9  8  7
13 14 15 .....

我们的问题是:已知了两个楼号 m 和 n,需要求出它们之间的最短移动距离。(不能斜线方向移动)

输入格式

输入为 3 个整数 w,m,n,空格分开,都在 11 到 1000010000 范围内。

w 为排号宽度,m,n 为待计算的楼号。

输出格式

要求输出一个整数,表示 m 与 n 两楼间最短移动距离。

输入输出样例

输入 #1复制

6 8 2

输出 #1复制

4

输入 #2复制

4 7 20

输出 #2复制

5

说明/提示

时限 1 秒, 256M。

蓝桥杯 2015 年省赛 B 组 H 题。

import java.util.*;
public class Main{
public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    int w=sc.nextInt();
    int m=sc.nextInt()-1;
    int n=sc.nextInt()-1;
    int x1=m/w;  int x2=n/w;//行号
    int y1=m%w;  int y2=n%w;//列号
    if(x1%2!=0)     y1=w-1-y1;//判断是否为奇数行,如果是的话,翻转
    if(x2%2!=0)     y2=w-1-y2;//同上
    int distance=Math.abs(x1-x2)+Math.abs(y1-y2);//求距离
    System.out.println(distance);
}
}

注:是Math

博主是第一次参加蓝桥杯比赛,希望大家一起进步呀。

大家有啥好的实现方法也可以在评论区分享,类似的题也可以分享​​​​​​。

参考:

蓝桥杯AcWing学习笔记 4-2模拟的学习(附相关蓝桥真题:错误票据、移动距离、日期问题、航班时间、外卖店优先级)(Java)-CSDN博客

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
题目描述 小明做完一道物理题后,拿起手机想打发一下时间,于是他用手机上的计步器开始走路,走路时手机计步器会记录他走的步数,小明每走两步手机计步器上的数就会加一。小明想知道自己走了多少步,于是他开始频繁地看计步器上显示的步数,但他发现没看一次计步器上的步数,步数就会清零,小明很苦恼,请你帮助他算出他走的总步数。 输入格式 输入文件共两行。 第一行为一个整数n,表示小明看了几次计步器上的步数。 第二行为n个整数,用空格隔开,表示小明每次看计步器时计步器上显示的步数。 输出格式 输出文件共一行,为一个整数,表示小明一共走的步数。 数据范围 0≤n≤1000,每次看计步器时计步器上所显示的步数不超过100。 输入样例 5 2 3 1 5 4 输出样例 24 算法1 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 python3 代码 算法2 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 C++ 代码 算法3 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 Java 代码 算法4 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 C 代码 算法5 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 Go 代码 算法6 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 Scala 代码 算法7 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 JavaScript 代码 算法8 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 C# 代码 算法9 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 PHP 代码 算法10 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 Ruby 代码 算法11 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 Swift 代码 算法12 (暴力枚举) $O(n^2)$ blablabla 时间复杂度 参考文献 VB 代码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值