当前位置: 首页 > news >正文

互联网建设汕头关键词优化平台

互联网建设,汕头关键词优化平台,wordpress 新主题,html5网站上线模版[蓝桥杯 2015 省 B] 移动距离 题目描述 X 星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为 $1,2,3, \cdots $ 。 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为 6 6 6 时,开始情形如…

[蓝桥杯 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.yayakq.cn/news/832274/

相关文章:

  • centos7怎么做网站服务器北京建设银行网站
  • 黑龙江高端网站建设分享经济网站怎么建设
  • 网站配置支付宝农村自建房设计图一层楼平面图
  • 做单页网站价格软件人力外包
  • 网站浮动广告代码杭州公司注册多少钱
  • 公司购买网站怎么做分录WordPress如何迁移数据
  • 济南 网站建设公司 医疗做网站的公司前三名
  • 查询个人房产信息网站wordpress帖子缩略图
  • 北京免费网站建设模板下载怎么查网站开发语言
  • 购物网站后台设计江阴做网站优化
  • 淄博网站建设找李光明seo外链推广
  • 如何做网站清风制作中国住房与城乡建设部网站
  • 谢岗网站建设公司app软件大全
  • 做网站去哪找客户前端和后端哪个常熬夜
  • 汕头网站快速排名白云区做网站
  • 建设厅网站查询电工证件建设厅官方网站河南
  • php网站 缓存新出的网络游戏排行榜
  • 商城微网站开发微网站白水网站建设
  • wordpress蜘蛛统计插件seo相关ppt
  • 安徽省建设干部培训学校网站没有备案的网站怎么做淘宝客
  • 淘宝的网站建设情况wordpress文404
  • 电子商务网站建设与维护考试修改WordPress图片上传
  • 常平网站开发青岛专业做外贸网站
  • 知名网站排行榜南宁隆安网站建设
  • 万载网站建设网站推广上首页
  • 厦门建设工程招标中心网站北京朝阳区二手房出售
  • 蓝田县建设局网站学生教育平台入口
  • asp.net做网站吗商标怎么注册
  • 企业网站建设计划wordpress get option
  • 母婴微网站设计规划网站优化反馈机制 seo