【发布时间】:2018-03-01 14:03:38
【问题描述】:
我已经为此工作了一段时间,这就是我到目前为止所得到的......这段代码不起作用。此代码仅供参考。任务是一个没有围墙的迷宫。我必须使用递归算法。每个空间都有一个数字,当我降落在一个空间上时,这个数字告诉我我可以在特定方向上移动多少。我必须返回路径。 (如果有解决方案,我已经完成了返回 True 或 False 的版本。)我似乎无法返回路径本身。
def pathsolve(self, start, end, vis=None):
z=self.__getitem__(start)
x,y=start
b=False
if path==None:
path=deque()
if vis==None:
vis=deque()
if start == end:
vis.appendleft(start)
return True
elif start in path:
return False
elif z==0:
return False
else:
#visited.add(start)
path.append(start)
if self.onboard((x+z,y)) and (x+z,y) not in path:
#print("going to"+str((x+z,y))+" by "+str(z)+" from "+str (start))
b=self.pathsolve((x+z,y),end, path)
#print()
if self.onboard((x,y+z)) and (x,y+z) not in path and b == False:
#print("xgoing to"+str((x,y+z))+" by "+str(z)+" from "+str(start))
b=self.pathsolve((x,y+z),end, path)
#print()
if self.onboard((x,y-z)) and (x,y-z) not in path and b == False:
#print("ygoing to"+str((x,y-z))+" by "+str(z)+" from "+str(start))
#print(self.onboard((x,y-z)))
b=self.pathsolve((x,y-z),end, path)
#print(path)
if self.onboard((x-z,y)) and (x-z,y) not in path and b == False:
#print("zgoing to"+str((x-z,y))+" by "+str(z)+" from "+str(start))
#print(end)
b=self.pathsolve((x-z,y),end, path)
# if b==True and start is not
vis.appendleft(start)
return b
【问题讨论】: