各位大大好
某份作业需要解迷宫
我参考了网络上的递回算法
但是却总是遇到stack overflow
想给各位抓药一下
其中 0 是可以走的路径
如果确定是正确路径我就标记 1
起点为矩阵ret[1][0]
终点为ret[99][100]
https://imgur.com/LxVeeUY.jpg
terminal执行结果
https://imgur.com/inKi4aR.jpg
会stackoverflow我想是因为无法走到终止条件(?)
但是实在不知问题出在哪边QAQ
第一次写递回程式麻烦各位学长姐鞭小力一点呜呜
谢谢!
作者:
djshen (djshen)
2018-04-28 12:04:00你先把走的路径印出来看跟你想的一不一样然后先从小一点的试试看
你i,j都没终止条件阿walk(ret,i,j+1) j会加到无限大
作者: s9041200 (小明阿) 2018-04-29 13:52:00
没设边界条件。如果设了还是爆掉,就用dp或单源最短路径试试。
作者:
froce (froce)
2018-04-29 19:27:00最后一招就是改sys.setrecursionlimit()
作者:
Yshuan (倚絃)
2018-04-30 16:14:00你把size先改成30以内看是否有结果DFS可以用循环写的 和BFS差别在容器是stack而非queue文章中的写法 一个点会被重复拜访阿 2x2也会overflow漏看line 7, 那么就是改小size先确定这会动 再优化吧
因为你递回写的方式会把整个MATRIX走满 也就是100*100 在建立boundary情形下 先往j + 1走到底 j == 100时又往下 i + 1下走 总而言之八成会绕完整个matrix然后你not只用在一个条件下 估计走一走都是True应该八成原本标记的1都会又会变成0