0
点赞
收藏
分享

微信扫一扫

【Python训练营】Python每日一练----第6天:迷宫


【Python训练营】Python每日一练----第6天:迷宫_运行时间


????????????????????????
????????????Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照????????????

????​​​入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!????????????​​​ ????​​最后,愿我们都能在看不到的地方闪闪发光,一起加油进步????????????​​​ ????????????“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~????????????
????????????✨✨✨





Python每日一练:


  • ​​题目描述​​
  • ​​解题思路​​
  • ​​源码分享​​
  • ​​学习总结​​
  • ​​????往期文章----好文推荐????​​


题目描述

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

X 星球的一处迷宫游乐场建在某个小山坡上。它是由 10 \times 1010×10 相互连通的小房间组成的。

房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:


LL 表示走到左边的房间,
RR 表示走到右边的房间,
UU 表示走到上坡方向的房间,
DD 表示走到下坡方向的房间。
X 星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!
开始的时候,直升机把 100100 名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。


迷宫地图如下:
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR

请你计算一下,最后,有多少玩家会走出迷宫,而不是在里边兜圈子?

如果你还没明白游戏规则,可以参看下面一个简化的 4x4 迷宫的解说图:

【Python训练营】Python每日一练----第6天:迷宫_运行时间_02

运行限制

最大运行时间:1s

最大运行内存: 128M

解题思路


  • 将迷宫用列表的方式表示出来,可以是列表套列表,也可以是列表中套字符串
  • 在四个边上找出最原始的出口,将其在列表中表示出来,定义为result
  • 写出search()函数,依次遍历每个出口上下左右四个元素看看其方向是否能直通出口,如果它们直通出口,说明他们每个也是直通出口的,将其也加入出口的行列,随后再遍历他们,找出所有的出口。
  • 注意向右找出口时,原出口列的序列大小不为0,因为列的序列0的左边没元素了;同理向左时,列的序列大小不为9;向上时行的序列大小不为9;向下时行的序列大小不为0.

源码分享

# 一万次悲伤,依然会有Dream,我一直在最温暖的地方等你!
# @Time : 2022/1/22 11:38
# @Author : 是Dream呀!
# @File : 迷宫.py
map = ['UDDLUULRUL',
'UURLLLRRRU',
'RRUURLDLRD',
'RUDDDDUUUU',
'URUDLLRRUU',
'DURLRLDLRL',
'ULLURLLRDU',
'RDLULLRDDD',
'UUDDUDUDLL',
'ULRDLUURRR']
# 写出所有的出口
result = [[0,0],[0,4],[0,5],[0,8],[9,3],[9,9]]
def search(result,map):
for i in result:
if i[1] != 0 and map[i[0]][i[1] - 1] == 'R':
result.append([i[0], i[1] - 1])
if i[0] != 0 and map[i[0] - 1][i[1]] == 'D':
result.append([i[0] - 1, i[1]])
if i[1] != 9 and map[i[0]][i[1] + 1] == 'L':
result.append([i[0], i[1] + 1])
if i[0] != 9 and map[i[0] + 1][i[1]] == 'U':
result.append([i[0] + 1, i[1]])
return result
search(result,map)
print(len(result))

学习总结

1.创建双列表时,小列表元素类型必须要声明: ​str(i)或者int(i)最常用​

map = ['UDDLUULRUL',
'UURLLLRRRU',
'RRUURLDLRD',
'RUDDDDUUUU',
'URUDLLRRUU',
'DURLRLDLRL',
'ULLURLLRDU',
'RDLULLRDDD',
'UUDDUDUDLL',
'ULRDLUURRR']
a = [[str(i) for i in j] for j in map]
print(a)
# [['U', 'D', 'D', 'L', 'U', 'U', 'L', 'R', 'U', 'L'], ['U', 'U', 'R', 'L', 'L', 'L', 'R', 'R', 'R', 'U'], ['R', 'R', 'U', 'U', 'R', 'L', 'D', 'L', 'R', 'D'], ['R', 'U', 'D', 'D', 'D', 'D', 'U', 'U', 'U', 'U'], ['U', 'R', 'U', 'D', 'L', 'L', 'R', 'R', 'U', 'U'], ['D', 'U', 'R', 'L', 'R', 'L', 'D', 'L', 'R', 'L'], ['U', 'L', 'L', 'U', 'R', 'L', 'L', 'R', 'D', 'U'], ['R', 'D', 'L', 'U', 'L', 'L', 'R', 'D', 'D', 'D'], ['U', 'U', 'D', 'D', 'U', 'D', 'U', 'D', 'L', 'L'], ['U', 'L', 'R', 'D', 'L', 'U', 'U', 'R', 'R', 'R']]


​????今天是我在Python训练营的第 6 天,希望每天都能见到最棒的你????​


???????????? 好啦,这就是今天要分享给大家的全部内容了

❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~

【Python训练营】Python每日一练----第6天:迷宫_python_04



举报

相关推荐

0 条评论