Path: blob/master/公开课/第06次公开课-算法入门系列2-在水一方/code/example03.py
3076 views
"""1迷宫寻路2"""3import random4import sys56WALL = -17ROAD = 089ROWS = 1010COLS = 10111213def find_way(maze, i=0, j=0, step=1):14"""走迷宫"""15if 0 <= i < ROWS and 0 <= j < COLS and maze[i][j] == 0:16maze[i][j] = step17if i == ROWS - 1 and j == COLS - 1:18print('=' * 20)19display(maze)20sys.exit(0)21find_way(maze, i + 1, j, step + 1)22find_way(maze, i, j + 1, step + 1)23find_way(maze, i - 1, j, step + 1)24find_way(maze, i, j - 1, step + 1)25maze[i][j] = ROAD262728def reset(maze):29"""重置迷宫"""30for i in range(ROWS):31for j in range(COLS):32num = random.randint(1, 10)33maze[i][j] = WALL if num > 7 else ROAD34maze[0][0] = maze[ROWS - 1][COLS - 1] = ROAD353637def display(maze):38"""显示迷宫"""39for row in maze:40for col in row:41if col == -1:42print('■', end=' ')43elif col == 0:44print('□', end=' ')45else:46print(f'{col}'.ljust(2), end='')47print()484950def main():51"""主函数"""52maze = [[0] * COLS for _ in range(ROWS)]53reset(maze)54display(maze)55find_way(maze)56print('没有出路!!!')575859if __name__ == '__main__':60main()616263