首页 > 其他分享 >蓝桥杯-移动距离(最简单的写法)

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

时间:2024-05-13 11:43:08浏览次数:11  
标签:ym yn -- 纵坐标 横坐标 蓝桥 int 移动 写法

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;
}

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

标签:ym,yn,--,纵坐标,横坐标,蓝桥,int,移动,写法
From: https://www.cnblogs.com/xxctx/p/18188903

相关文章

  • P9425 [蓝桥杯 2022 国 B] 2022
    一、题目描述将\(2022\)拆分成\(10\)个互不相同的正整数之和,有多少种方案?二、问题简析令\(dp[i][j]=\)\(i\)的\(j\)划分的方案数(满足互不相同的正整数)。有两种实现方式:\(dp[i][j]\)不含\(1\)在\(dp[i-j][j]\)的基础上,每个元素+1。有\(j\)个元素,每个元素+1,......
  • 第十二届蓝桥杯选拔赛 python
    第一题(难度系数2,18个计分点) 编程实现:输入一个正整数n,计算出n乘100的积。 输入描述:输入一个正整数n输出描述:输出n乘100的积 样例输入:2样例输出:200  第二题(难度系数3,20个计分点) 编程实现:给定一个正整数,判断这个正整......
  • Unity2D 模拟手柄实现玩家移动
    1,创建控制器UI2,挂载脚本3,脚本编写基本要素[Tooltip("玩家游戏体")]publicRigidbody2Dplayer;[Tooltip("玩家速度")]publicfloatspeed=1f;[Tooltip("玩家动画")]publicAnimatoranimator;publicenumMode{BU......
  • P9425 [蓝桥杯 2023 国 B] AB 路线
    P9425[蓝桥杯2023国B]AB路线一、问题简析本题是一道\(BFS\)题。与普通的广搜题不同的是,本题中,格子可以多次访问。因此,vis数组不能只用二维,要进行升维。本题中,每个节点包含以下信息:structnode{pair<int,int>loc;//坐标charch;//......
  • 蓝桥杯-错误票据(两种写法stringstream和扣字符)
    某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID。假设断号不可能......
  • 蓝桥杯-递增三元组(三种解法,二分, 双指针, 前缀和)
    给定三个整数数组A=[A1,A2,…AN],B=[B1,B2,…BN],C=[C1,C2,…CN],请你统计有多少个三元组(i,j,k)满足:1≤i,j,k≤NAi<Bj<Ck输入格式第一行包含一个整数N。第二行包含N个整数A1,A2,…AN。第三行包含N个整数B1,B2,…BN。第四行包含N个整数C1,C2,…CN。输出格......
  • 蓝桥杯大赛单片机比赛经验总结
    蓝桥杯大赛单片机比赛经验总结适当的延时很重要,可以解决一些不正常现象ds1302读取的时间是BCD码,操作时间时换成10进制操作例:(shi/16)*10+shi%16每次只接受和发送一个字符,字符用单引号‘’字符串用双引号“”if(SBUF==‘a’)而不是if(SBUF=="a")总中......
  • 蓝桥杯-波动数列
    观察这个数列:1302-11-2…这个数列中后一项总是比前一项增加2或者减少3,且每一项都为整数。栋栋对这种数列很好奇,他想知道长度为n和为s而且后一项总是比前一项增加a或者减少b的整数数列可能有多少种呢?输入格式共一行,包含四个整数n,s,a,b,含义如前面所述。输出......
  • Fibocom L830 是一款移动通信模块,通常用于嵌入式设备或物联网(IoT)应用中。它提供了蜂窝
    驱动程序下载FibocomL830是一款移动通信模块,通常用于嵌入式设备或物联网(IoT)应用中。它提供了蜂窝连接功能,支持4GLTE网络,并具有全球覆盖的能力。这种模块通常被嵌入到各种设备中,例如智能手表、智能家居设备、工业设备等,以便这些设备可以通过蜂窝网络进行通信和远程控制。关于......
  • 移动端定位打卡
    签到按钮脚本Mobile_NS.getCurrPosition(function(result){varlngdangq=result["lng"];varlathoum=result["lat"];varminDistance=null;//alert("addr"+addr);vardkzt=$f("dkzt").val();......