

問題の本文はこちら: [AtCoder Typical Contest 001 A -
深さ優先探索](https://atc001.contest.atcoder.jp/tasks/dfs_a)

自分のコードは以下の通りです。

[code]

    import sys
    sys.setrecursionlimit(10000)
    
    
    H, W = map(int, input().split())
    maze = [list(map(str, input().split())) for _ in range(H)]
    
    def search(x,y, maze):
        if x < 0 or  y < 0 or maze[x][0][y] == "#":
            return
        elif maze[x][0][y] == "g":
            print("Good")
        else:
            search(x+1, y, maze)
            search(x-1, y, maze)
            search(x, y+1, maze)
            search(x, y-1, maze)
    
    # "S"の座標を特定する
    for i in range(H):
        for j in range(W):
            if maze[i][0][j] == "s":
                sx = i
                sy = j
    
    search(sx, sy, maze)
    
[/code]

実行すると以下のようなエラーが出てきます。（入力例１）

[code]

    RecursionError: maximum recursion depth exceeded in comparison
    
[/code]


CC BY-SA 4.0
2019-06-23T03:17:49.123
56026
2019-06-23T03:49:43.793
2019-06-23T03:28:41.633
19110
34835
question
python python3 アルゴリズム
Pythonでの迷路の問題が解けません


アルゴリズムの意味を考えるに、`maze[x][0][y]` は `maze[y][x]` か何かの間違いです。`print(maze)` とか
`print(maze[2][3])` とかを適当に実行することで中身を確認してみてください。

しかし、この修正をしてもまだ他の例ではエラーが出るはずです。関数 `search`
の再帰呼び出しが止まるときの条件がきちんと設定されているかどうかをチェックするようにしてみてください。具体的には、`search`
の再帰呼び出しが止まるのはざっくり言うと以下の条件のどれかが満たされるときですが、これに抜け漏れがないかどうか考えてみてください。

  * `x` が 0 未満のとき（左がはみだしたとき）
  * `y` が 0 未満のとき（上がはみだしたとき）
  * 見ているマスが `"#"` のとき（塀に当たったとき）
  * 見ているマスが `"g"` のとき（ゴールに辿り着いたとき）

条件を整理しても見えてこない場合は、プログラムがどのように実行されるかを具体的に手で書いてみましょう。例示は理解の試金石です。


CC BY-SA 4.0
2019-06-23T03:49:43.793
56027
2019-06-23T03:49:43.793
19110
56026
answer