蓝桥杯 曼哈顿距离

2024-09-01 19:58
文章标签 距离 蓝桥 曼哈顿

本文主要是介绍蓝桥杯 曼哈顿距离,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3...
当排满一行时,从下一行相邻的楼往反方向排号。
我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)

输入为3个整数w m n,空格分开,都在1到10000范围内
w为排号宽度,m,n为待计算的楼号。
要求输出一个整数,表示m n 两楼间最短移动距离。
比如:当小区排号宽度为6时,开始情形如下:
1  2  3  4  5  6
12 11 10 9  8  7
13 14 15 .....

用户输入:
6 8 2
则,程序应该输出:

4


我的思路比较简单(当然实现比较麻烦,但是好想啊~!!)

例如:w=3,m=5,n=2

1 2 3   

6 5 4 

首先,将其转换为一般矩阵(比较容易求余,得到行数)

1 2 3

4 5 6

然后,根据观察可以得出以下结论:

a.只有偶数行的时候,当前行才进行反转

b.找到反转行与未反转行的对应关系

  b.1 行数row:(m+m-1)/w   -----根据规律得出来的,把m=3代入可以推导出来(6 + 2)/2 =2  ----第2行

  b.2 列数col: (row*w)-(m%w)   row*w---->当前偶数行最大的数(例第2行:2*3=6)  m%w--->表示反转第几列  

最后,输出的是已经转换成一般矩阵的序列

直接使用公式求竖向与横向绝对值之差的和即可。--->abs(ny-my)+abs(nx-mx)

#include <iostream>
#include <algorithm>using namespace std;
int row,col;
int trans(int t,int w){row=(t+w-1)/w;//找出行数 if((row)%2==0){	//如果是偶数行就要转换 t=(row*w)-((t+w-1)%w);}return t;
}int main(void){int w,rm,rn;w=4;rm=7;rn=20;int m,n;//转换矩阵 m=trans(rm,w);n=trans(rn,w);int my,mx;int ny,nx;if(m%w==0){my=(m+w-1)%w;mx=(m/w)-1;}else{my=(m+w-1)%w;mx=m/w;}if(n%w==0){ny=(n+w-1)%w;nx=(n/w)-1;}else{ny=(n+w-1)%w;nx=n/w;}printf("%d",abs(ny-my)+abs(nx-mx));return 0;}





这篇关于蓝桥杯 曼哈顿距离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127902

相关文章

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

线性代数|机器学习-P35距离矩阵和普鲁克问题

文章目录 1. 距离矩阵2. 正交普鲁克问题3. 实例说明 1. 距离矩阵 假设有三个点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​,三个点距离如下: ∣ ∣ x 1 − x 2 ∣ ∣ 2 = 1 , ∣ ∣ x 2 − x 3 ∣ ∣ 2 = 1 , ∣ ∣ x 1 − x 3 ∣ ∣ 2 = 6 \begin{equation} ||x

模拟退火求n个点到某点距离和最短

/*找出一个点使得这个店到n个点的最长距离最短,即求最小覆盖圆的半径用一个点往各个方向扩展,如果结果更优,则继续以当前步长扩展,否则缩小步长*/#include<stdio.h>#include<math.h>#include<string.h>const double pi = acos(-1.0);struct point {double x,y;}p[1010];int

黑神话:悟空》增加草地绘制距离MOD使游戏场景看起来更加广阔与自然,增强了游戏的沉浸式体验

《黑神话:悟空》增加草地绘制距离MOD为玩家提供了一种全新的视觉体验,通过扩展游戏中草地的绘制距离,增加了场景的深度和真实感。该MOD通过增加草地的绘制距离,使游戏场景看起来更加广阔与自然,增强了游戏的沉浸式体验。 增加草地绘制距离MOD安装 1、在%userprofile%AppDataLocalb1SavedConfigWindows目录下找到Engine.ini文件。 2、使用记事本编辑

SimD:基于相似度距离的小目标检测标签分配

摘要 https://arxiv.org/pdf/2407.02394 由于物体尺寸有限且信息不足,小物体检测正成为计算机视觉领域最具挑战性的任务之一。标签分配策略是影响物体检测精度的关键因素。尽管已经存在一些针对小物体的有效标签分配策略,但大多数策略都集中在降低对边界框的敏感性以增加正样本数量上,并且需要设置一些固定的超参数。然而,更多的正样本并不一定会带来更好的检测结果,事实上,过多的正样本

Matlab)实现HSV非等间隔量化--相似判断:欧式距离--输出图片-

%************************************************************************** %                                 图像检索——提取颜色特征 %HSV空间颜色直方图(将RGB空间转化为HS

C/C++两点坐标求距离以及C++保留两位小数输出,秒了

目录 1. 前言 2. 正文 2.1 问题 2.2 解决办法 2.2.1 思路 2.2.2 代码实现 3. 备注 1. 前言 依旧是带来一个练手的题目,目的就一个,方法千千万,通向终点的方式有很多种,没有谁与谁,我们都是为了成为更好的自己。 2. 正文 2.1 问题 题目描述: 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。 输入格式:

mysql5.6根据经纬度查询距离二

在MySQL 5.6中,您可以使用Haversine公式来根据经纬度查询距离。以下是一个示例SQL查询,它计算出所有点与给定点(经度lon和纬度lat)的距离,并按距离排序: SELECT id, (2 * 6378.137 * ASIN(SQRT(POW( SIN( PI( ) * ( $lng- `long` ) / 360 ), 2 ) + COS( PI( ) * $lat / 180

找不同-第15届蓝桥省赛Scratch初级组真题第4题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第183讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。 第15届蓝桥杯省赛已于2024年8月24日落下帷幕,编程题一共有5题,分别如下: 猪八戒落地 游乐场 画西瓜 找不同 消

像素间的关系(邻接、连通、区域、边界、距离定义)

文章目录 像素的相邻像素4邻域D邻域8邻域 邻接、连通、区域和边界邻接类型连通区域边界 距离测度欧氏距离城市街区距离(city-block distance)棋盘距离(chessboard distance) 参考 像素的相邻像素 4邻域 坐标 ( x , y ) (x,y) (x,y)处的像素 p p p有2个水平的相邻像素和2个垂直的相邻像素,它们的坐标是: ( x