题目描述
你被困在一个多层停车场。您的任务是仅使用楼梯离开停车场。出口总是在一楼的右下角。
创建一个采用矩阵的函数,其中:
0
表示免费停车位。1
表示楼梯。2
表示您的起始位置,可以在停车场的任何一层。- 出口总是在一楼的右下角。
- 您必须使用楼梯
1
才能下一层。 - 除了一楼,每一层只有一个楼梯,一楼没有任何楼梯。
请你设计并返回一个最快离开停车场的字符串。
输入输出格式
输入格式
第一行 N
表示循环的次数。
第二行有 test_data
表示 测试数据的字符串,这些字符串中间都用空格隔开。
输出格式
返回离开停车场的字符串。
输入输出样例1
输入2
1 0 0 0 2
0 0 0 0 0
输出L4 D1 R4
输入输出样例2
输入3
2 0 0 1 0
0 0 0 1 0
0 0 0 0 0
输出R3 D2 R1
解释
表示向右走三下,向下走两下,再向右走一下。
说明提示
arr = [
[1, 0, 0, 0, 2],
[0, 0, 0, 0, 0]
]
# 从2开始,向左移动4次=“L4”
# 从楼梯下 1 步 = “D1”
# 向右移动 4 次从右下角退出 = "R4"
def parking_exit(lst): # 定义一个离开停车场的函数 并接收一个矩阵 # ********Begin*********** # 结果集数据列表 route = [] # 累加数据 tmp = "" # all_tmp = "" pos = lst[0].index(2) # 获取矩阵中第一行的数据你位置的索引 for i in range(len(lst) - 1): # 找到矩阵中每行楼梯的索引 strcs = lst[i].index(1) if strcs < pos: # 当楼梯的索引位置小于你所在位置的索引时 tmp = "L" + str(pos - strcs) # 对我们的tmp数据进行计算返回出向左走的步数。 route.append(tmp) # 存入列表并向下一格 route.append("D1") elif strcs > pos: # 当楼梯索引位置大于你的索引位置 tmp = "R" + str(strcs - pos) # 那么向右走对应的数值。 route.append(tmp) # 存入到数据中 route.append("D1") # 存入列表并向下一格 elif strcs == pos: # 当你就在楼梯口中时 if (route[-1][0] == "D"): # 如果上一次是向下的那么这一次就向下走两格。 route[-1] = "D" + str(int(route[-1][1]) + 1) else: route.append("D1") tmp = "" pos = strcs # 如果当你的位置小于矩阵第一行 if pos < len(lst[0]) - 1: # 那么向右走相应的步数 route.append("R" + str(len(lst[0]) - 1 - pos)) for k in route: all_tmp += k + ' ' return all_tmp # ********End************* '''arr = [ [1, 0, 0, 0, 2], [0, 0, 0, 0, 0] ] # 从2开始,向左移动4次=“L4” # 从楼梯下 1 步 = “D1” # 向右移动 4 次从右下角退出 = "R4" ''' # 获取用户输入 N = int(input()) lst = [] for i in range(N): a = [int(i) for i in input().split()] lst.append(a) print(parking_exit(lst)) 0
版权声明:本文为minghaibuai原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。