您的位置:首页 > 游戏 > 游戏 > 搭建一个论坛_东莞市网站建设制作设计平台_产品线上推广方案_百度一下官网手机版

搭建一个论坛_东莞市网站建设制作设计平台_产品线上推广方案_百度一下官网手机版

2025/6/7 23:59:51 来源:https://blog.csdn.net/wuqingshun314159/article/details/147530961  浏览:    关键词:搭建一个论坛_东莞市网站建设制作设计平台_产品线上推广方案_百度一下官网手机版
搭建一个论坛_东莞市网站建设制作设计平台_产品线上推广方案_百度一下官网手机版

移动距离

原题目链接

题目描述

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

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

例如,当小区排号宽度为 6 时,排列如下:

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

问题

已知两个楼号 mn,需要求出它们之间的最短移动距离(只允许水平和垂直方向移动,不能斜着走)。


输入描述

输入一行,包含 3 个整数:

  • w:排号宽度;
  • m:楼号 m;
  • n:楼号 n。

数据范围:

  • 1 ≤ w, m, n ≤ 10000

输出描述

输出一个整数,表示 mn 两楼之间的最短移动步数


输入输出样例

示例 1

输入

6 2 8

输出

4

示例 2

输入

4 7 20

输出

5

c++代码

#include<bits/stdc++.h>using namespace std;int main() {int w, m, n, i, j, k, l;cin >> w >> m >> n;i = m / (w + 1), k = n / (w + 1);if (i % 2 == 0) j = m - i * w - 1;else j = (w - 1) - (m - (i * w) - 1);if (k % 2 == 0) l = n - k * w - 1;else l = (w - 1) - (n - (k * w) - 1);cout << abs(i - k) + abs(j - l);return 0;
}//by wqs

题目解析

一个结论
对于宽度为w的数字m

他在第m / (w + 1)行

如果行为偶数,它在第m - i * w - 1列

如果行为奇数,它在第(w - 1) - (m - (i * w) - 1)列

注意从下标0开始。

最后答案就是abs(i - k) + abs(j - l)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com