dfs bfs思考

dfs时传入了第一个参数。这时就像下棋选择了走的第一步。接着dfs会遍历所有可能的情况。就像只确定下棋的第一步时,之后不同走法可能会走到同一位置一样,dfs也会多次到达同一位置。

因此若只需要到达某个位置一次,则用于一个dfs函数外的数组vis记录访问过的,访问过的就vis[x][y]=1。就算某次递归栈到达了某个地方,但因为这个地方曾经被访问过,进而从这个地方开始的所有其他可能也都曾被访问过,那么就无需再次访问这个地方,这次dfs直接return。

若并非只需要到达某个位置,而是想要知道有多少种到达目标位置的方式。那么标记的方式应该是:在进入dfs函数时令vis[x][y]=1, 在退出dfs时令vis[x][y]=0,通过这种方式避免dfs在一次访问中重复访问某个点。


对bfs进行思考时,用一个长宽为2的地图进行思考。