首先补充上一篇博客对于获取输入的遗漏点,即每行的输入是固定数目的数字时,可以用:
while True:
try:
(x, y) = (int(x) for x in raw_input().split())
print x + y
except EOFError:
break
最近刷题看到了一题,是假设一个探险家被困在了地底的迷宫之中,要从当前位置开始找到一条通往迷宫出口的路径。迷宫可以用一个二维矩阵组成,有的部分是墙,有的部分是路。迷宫之中有的路上还有门,每扇门都在迷宫的某个地方有与之匹配的钥匙,只有先拿到钥匙才能打开门。请设计一个算法,帮助探险家找到脱困的最短路径。如前所述,迷宫是通过一个二维矩阵表示的,每个元素的值的含义如下 0-墙,1-路,2-探险家的起始位置,3-迷宫的出口,大写字母-门,小写字母-对应大写字母所代表的门的钥匙
当时毫无头绪,只得参考答案寻找思路,结果发现牛客上并没有人用python做= =尴尬:
首先找python生成二维列表的方法:
lists = [[] for i in range(3)]
>>> lists[0].append(3)
>>> lists[1].append(5)
>>> lists[2].append(7)
>>> lists
[[3], [5], [7]]
那么首先生成迷宫对应的二维数组,并保存初始点位置
import sys
State s=new State();
line = sys.stdin.readline().strip()
if line=='':
print("0")
m=list(map(int, line.split()))
lists = [[] for i in range(m[0])]
for i in range(m[0]):
nums = sys.stdin.readline().strip().split()
for j in range(m[1]):
if nums[j]==2:
s.setstate(i,j)
lists[i].append(nums[j])
solution(lists,s,m[0],m[1])
定义位置类
class State(object):
def __init__(self):
self.px=0
self.py=0
self.keys = 0
self.step = 0
def setstate(x,y):
self.px=x
self.py=y
函数:
def solution(lists,s,m[0],m[1])
。。。懒癌犯了还是给出地址吧https://www.nowcoder.com/test/question/done?tid=16851845&qid=111152#summary