蓝桥杯-移动距离(最简单的写法)

X星球居民小区的楼房全是一样的,并且按矩阵样式排列。

其楼房的编号为 1,2,3…当排满一行时,从下一行相邻的楼往反方向排号。

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

1 2 3 4 5 6
12 11 10 9 8 7
13 14 15 …
我们的问题是:已知了两个楼号 m 和 n,需要求出它们之间的最短移动距离(不能斜线方向移动)。

输入格式

输入共一行,包含三个整数 w,m,n,w 为排号宽度,m,n 为待计算的楼号。

输出格式

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

数据范围

1≤w,m,n≤10000,

输入样例:

6 8 2

输出样例:

4

题解:

  • 把要求的两点的坐标求出来
  • 横纵坐标都从0开始

代码中的 n --, m --能省去很多边界特殊情况

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

边界分析:
这个中如果n没有减一, 那么 6的横坐标就变成了 n/w = 1, 而 1、2、3、4、5的横坐标是 n/w = 0, 显然 6 的横坐标是0, 或者[1,5]的横坐标是1
再比如6的纵坐标是 n%w = 0, 显然如果纵坐标是从0开始的, 6的纵坐标应该是5, 如果纵坐标是从1开始的, 6的纵坐标就应该是6


但是如果我们对 n减一, m减一, 就可以不用处理上面的特殊情况

上面的边界情况看上去不复杂, 但处理起来并不简单, 不信你自己尝试下

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int w, n, m; cin >> w >> n >> m;
    n --, m --;
    
    int xn = n / w, yn = n % w, xm = m / w, ym = m % w;
    
    if (xn % 2 != 0) yn = w - yn - 1; // 当时奇数行的时候:  n % w算出来的是从右往左的坐标, 我们要把它的纵坐标转换成从左往右的坐标
    if (xm % 2 != 0) ym = w - ym - 1;

    cout << abs(xn - xm) + abs(yn - ym) << endl;
    return 0;
}

觉得写的不错的话, 点个赞吧~

相关推荐

  1. -移动距离(简单写法)

    2024-05-14 11:14:04       31 阅读
  2. 简介

    2024-05-14 11:14:04       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 11:14:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 11:14:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 11:14:04       87 阅读
  4. Python语言-面向对象

    2024-05-14 11:14:04       96 阅读

热门阅读

  1. 你眼中的IT行业现状与未来趋势

    2024-05-14 11:14:04       27 阅读
  2. 谈谈std::map的lower_bound

    2024-05-14 11:14:04       30 阅读
  3. Linux-vi/vim

    2024-05-14 11:14:04       30 阅读
  4. CentOS常见的命令

    2024-05-14 11:14:04       32 阅读
  5. 水利行业工程设计资质如何去申请

    2024-05-14 11:14:04       32 阅读
  6. vue预览PDF文件的方法

    2024-05-14 11:14:04       28 阅读
  7. Flink Stream API实践

    2024-05-14 11:14:04       28 阅读
  8. 13.复习1笔记

    2024-05-14 11:14:04       28 阅读
  9. Gitee使用教程

    2024-05-14 11:14:04       32 阅读
  10. VsionPro

    2024-05-14 11:14:04       28 阅读
  11. C语言从头学05——头文件及库文件

    2024-05-14 11:14:04       28 阅读