P8623 [蓝桥杯 2015 省 B] 移动距离 Python

[蓝桥杯 2015 省 B] 移动距离

题目描述

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

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

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

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

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

输入格式

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

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

输出格式

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

样例 #1

样例输入 #1

6 8 2

样例输出 #1

4

样例 #2

样例输入 #2

4 7 20

样例输出 #2

5

提示

时限 1 秒, 256M。

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

思路

先明白题意,其实就是找矩阵中怎么从一个点移动到另一个点,求总的步数。
再看下面这个图片,题目指定的楼号其实就是序号,如果按这样构造的矩阵,看 8 到 2 的距离的话**,
本质上是 8 的坐标 - 2 的坐标求和**
8(1,4) 2(0,1) (1-0) + (4-1)=4
在这里插入图片描述
这个肯定是二维数组,在二维数组中,每个元素都有自己的坐标,在给数组赋值时,其实就可以判断此时的序号是不是等于等会要判断的楼号,如果相等的话,就保存下坐标,当给定的两个坐标都知道时,就不必再继续赋值,直接退出循环,计算数值。

#创建一个w*10010的矩阵 ,每个位置为0

a = [[0]*w for i in range(10010)]

#在矩阵中,坐标的移动方向

dirction = [(0,1),(1,0),(0,-1),(1,0)]#右 下 左 下

#处理移动的逻辑 往右到头就去下面,往左到头继续往下走

while num<10001:#据题目知楼号在1-10000num+=1a[x][y] = numnewx = x + dirction[index][0]newy = y + dirction[index][1]if   newx<0 or newy>=6 or newy <0:index = (index+1)%4newx = x + dirction[index][0]newy = yindex = (index +1)%4x = newxy = newy

#判断是否等于输入的楼号

if num == m:x1,y1 = x,yind_x1 = Trueif num == n:x2,y2 = x,yind_x2= Trueif ind_x1 ==True and ind_x2 ==True:break

总代码


import math
w,m,n = map(int,input().split())
a = [[0]*w for i in range(10010)]
num=0
x,y=0,0
index= 0
x1,y1=0,0
ind_x1,ind_x2 = False,False
dirction = [(0,1),(1,0),(0,-1),(1,0)]#右 下 左 下
while num<10001:num+=1a[x][y] = numif num == m:x1,y1 = x,yind_x1 = Trueif num == n:x2,y2 = x,yind_x2= Trueif ind_x1 ==True and ind_x2 ==True:breaknewx = x + dirction[index][0]newy = y + dirction[index][1]if   newx<0 or newy>=w or newy <0:index = (index+1)%4# print("index_f",index)newx = x + dirction[index][0]newy = yindex = (index +1)%4# print("index_l",index)x = newxy = newy# print("value_x,value_y",x,y)
# for i in a:
#     for num in i:
#         print(f"{num:3d}",end="")     
#     print()
# print(x1,y1)
# print(x2,y2)
ans = abs(x1-x2) + abs (y1-y2)
print(ans)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/777340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云优惠券领取及使用常见问题解答

随着云计算的普及&#xff0c;腾讯云作为国内领先的云计算服务提供商&#xff0c;为越来越多的企业和个人提供了丰富的云产品和服务。为了帮助用户更好地了解和使用腾讯云优惠券&#xff0c;本文将为大家解答关于腾讯云优惠券领取及使用的常见问题。 一、腾讯云优惠券概述 腾讯…

软件设计师24--概念设计阶段

软件设计师24--概念设计阶段 考点1&#xff1a;概念设计过程考点2&#xff1a;E-R图属性E-R模型-联系类型判断例题&#xff1a;E-R模型-联系类型判断扩充的E-R模型 考点1&#xff1a;概念设计过程 需求分析 --> 抽象数据 --> 设计局部ER模型 --> 合并局部模型消除冲突…

二维前缀和与二维差分的表示

前缀和&#xff1a; 上述图片是求范围内的总和的图和公式 上述图片是初始化前缀和数组的图和公式 差分&#xff1a; 上图是差分公式 #include<iostream> #include<climits> #include<algorithm> #include<cstring> #include<cstdio> #include&l…

vue 借助vue-amap插件对高德地图的简单使用

需求&#xff1a;实现点击获取经纬度、定位、对特殊位置标点及自定义信息窗体功能。 高德地图的官网API&#xff1a;概述-地图 JS API 1.4 | 高德地图API vue-amap的中文文档&#xff1a;组件 | vue-amap 实现&#xff1a; 1、安装vue-amap插件 npm install vue-amap --save…

代码随想录第23天| 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 669. 修剪二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 你修剪的方式不对&#xff0c;我来给你纠正一下&#xff01;| LeetCode&#xff1a;669. 修剪二叉搜索树_哔哩哔哩_bilibili 给你二叉搜索树的根节点 root …

大数据之scala

为什么学习scala spark是新一代内存级大数据计算框架&#xff0c;是大数据的重要内容 spark就是使用scala编写的&#xff0c;因此为了更好的学习spark&#xff0c;需要掌握scala这门语言 spark的兴起&#xff0c;带动scala语言的发展 scala发展历史 联邦理工学院的马丁 奥德…

17.注释和关键字

文章目录 一、 注释二、关键字class关键字 我们之前写的HelloWorld案例写的比较简单&#xff0c;但随着课程渐渐深入&#xff0c;当我们写一些比较难的代码时&#xff0c;在刚开始写完时&#xff0c;你知道这段代码是什么意思&#xff0c;但是等过了几天&#xff0c;再次看这段…

使用 OpenOCD 来调试 STM32

STM32 在 Windows 上的交叉编译二 调试 在上一篇博客 《在Windows上交叉编译STM32(环境搭建)》 &#xff0c;已经让 CubeMX 生成的工程成功编译&#xff0c;并下载到板子上了。 这篇博客主要继续介绍接下来的步骤&#xff0c;调试。硬件是使用的 ST-LINK &#xff0c;别的也无…

C++基础11:模板与命名空间

此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏&#xff0c;参考书籍&#xff1a;《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 10.模板与命名空间 10.1 模板简述 模板使函数和类的处理对象…

API数据接口开发tglobal淘宝海外获得淘宝商品详情数据、商品ID、商品标题、价格、销量、规格属性等参数接入请求演示

要获取淘宝海外的商品详情、商品ID、商品标题、价格、销量、规格属性等参数&#xff0c;你可以使用淘宝海外的API。以下是一个简单的Python示例&#xff0c;使用requests库来调用淘宝海外的API。 首先&#xff0c;你需要注册一个开放平台账号并创建一个应用&#xff0c;以获取…

春秋云境CVE-2022-24663

简介 远程代码执行漏洞&#xff0c;任何订阅者都可以利用该漏洞发送带有“短代码”参数设置为 PHP Everywhere 的请求&#xff0c;并在站点上执行任意 PHP 代码。P.S. 存在常见用户名低权限用户弱口令 正文 进入首页我们没看到任何有价值的东西&#xff0c;那么就只好去寻找…

TOP100-回溯(二)

4.39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制…

【算法刷题 | 二叉树 05】3.28(左叶子之和、找树 左下角的值)

文章目录 11.左叶子之和11.1问题11.2解法一&#xff1a;递归11.2.1递归思路11.2.2代码实现 11.3解法二&#xff1a;栈11.3.1栈思想11.3.2代码实现 12.找树左下角的值12.1问题12.2解法一&#xff1a;层序遍历 11.左叶子之和 11.1问题 给定二叉树的根节点 root &#xff0c;返回…

【LeetCode】升级打怪之路 Day 28:回溯算法 — 括号生成 删除无效的括号

今日题目&#xff1a; 22. 括号生成301. 删除无效的括号 参考文章&#xff1a; 回溯算法&#xff1a;括号生成回溯算法&#xff1a;删除无效的括号 这是两道使用回溯算法来解决与括号相关的问题&#xff0c;具备一定的难度&#xff0c;需要学习理解。 通过第一道题“括号生成”…

RAFT:让大型语言模型更擅长特定领域的 RAG 任务

RAFT&#xff08;检索增强的微调&#xff09;代表了一种全新的训练大语言模型&#xff08;LLMs&#xff09;以提升其在检索增强生成&#xff08;RAG&#xff09;任务上表现的方法。“检索增强的微调”技术融合了检索增强生成和微调的优点&#xff0c;目标是更好地适应各个特定领…

查找总价格为目标值的两个商品【双指针】

这道题实际上跟本专栏上一题属于同一类型&#xff0c;是上一题的简单版&#xff0c;可以点击跳跃。 ⬇ 有效三角形的个数【双指针】 法一&#xff1a;暴力求解 class Solution { public:vector<int> twoSum(vector<int> &nums, int target){int n nums.size()…

Python3中画Sin (代码)

画正弦函数 import numpy as np import matplotlib.pyplot as plt # linspace() 函数用于生成等间隔的数字序列&#xff0c;接受三个参数&#xff1a;起始值&#xff0c;结束值&#xff0c;生成的点的数量 x np.linspace(0, 10, 100) y np.sin(x)plt.plot(x, y) plt.xlabel…

Vue中v-for多个Echarts图表组件只渲染一个要素问题排查

这个系列主要是用于记录我日常工作中遇到的一些Bug,既属于知识分享&#xff0c;也是对学习习惯的维持… 问题描述 今天&#xff0c;在开发一个WebGIS大屏项目时&#xff0c;我遇到了多个三维Echarts饼图图表渲染的问题&#xff0c;因为相似图表很多&#xff0c;我决定将Echart图…

Qt 多线程QThread的四种形式

重点&#xff1a; 1.互斥量&#xff1a;QMutex配套使用&#xff0c;lock(),unlock(),如果一个线程准备读取另一个线程数据时候采用tryLock()去锁定互斥量&#xff0c;保证数据完整性。 QMutexLocker简化版的QMutex,在范围区域内使用。 QMutex mutex QMutexLocker locker(&…

在Linux上使用nginx反向代理部署Docker网站

在政务云上部署Web环境&#xff0c;为了保证服务器安全&#xff0c;甲方只开放一个端口且只允许使用https协议进行访问&#xff0c;经过思考&#xff0c;决定使用docker部署网站&#xff0c;使用nginx反向代理&#xff0c;通过不同的二级域名访问不同的端口。 1 使用docker部署…