Read the body of the problem here: AtCoder Typical Contest 001A - Depth Priority Search
My code is as follows.
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
elifmaze[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)
# identify the coordinates of "S"
for i in range (H):
for jin range (W):
ifmaze[i][0][j]=="s":
sx = i
sy=j
search(sx,sy,maze)
When you run it, you get the following error:(Example Input 1)
RecursionError: maximum recovery depth exceeded in comparison
To understand the meaning of the algorithm, maze[x][0][y]
is a mistake in maze[y][x]
or something like print(maze)
or print(maze[2][3])
.
However, you should still see errors in other examples after making this correction.Try to check if the conditions for function search
stop recursive calls are set correctly.Specifically, search
recursive calls stop roughly when one of the following conditions is met, but consider if there are any omissions.
x
is less than 0 (with the left protruding)y
is <0 (top protruding)"#"
(when you hit the wall)"g"
(when you reach the goal)If you can't see it after organizing the conditions, write down how the program will run by hand.An example is a test of understanding.
© 2024 OneMinuteCode. All rights reserved.