直接上代码
maze = [[1, 0, 1, 0, 0, 1, 1, 0, 1, 1],
[1, 1, 1, 1, 1, 0, 1, 0, 0, 1],
[0, 0, 1, 0, 1, 0, 1, 0, 0, 1],
[0, 1, 1, 1, 1, 0, 1, 0, 0, 1],
[0, 0, 1, 0, 1, 0, 1, 0, 1, 1],
[1, 0, 0, 1, 1, 1, 1, 1, 0, 1],
[1, 1, 1, 1, 1, 0, 1, 0, 0, 1],
[1, 1, 0, 0, 1, 0, 1, 1, 1, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 1],
[1, 0, 1, 0, 1, 0, 1, 1, 0, 1]]
def check(x, y):
if y >= 0 and y < len(maze) and x >= 0 and x < len(maze[0]) and maze[y][x] == 1:
return True
else:
return False
def walk(x, y):
global success, procedure_list, success_count
maze[y][x] = 0
procedure_list.append((x, y))
if x == 9 and y == 0:
print("success")
success = 1
success_count += 1
success_procedure_ls.append(list(procedure_list))
procedure_list.remove((x, y))
maze[y][x] = 1
return True
if maze[y][x] == 0:
print("第{}行,第{}列".format(y + 1, x + 1))
for pos_y, pos_x in pos_ls:
if check(x + pos_x, y + pos_y): break
else:
print("死路")
if success < 100:
for pos_y, pos_x in pos_ls:
if check(x + pos_x, y + pos_y):
walk(x + pos_x, y + pos_y)
maze[y][x] = 1
procedure_list.remove((x, y))
return success
procedure_list = []
success = 0
success_procedure_ls = []
success_count = 0
pos_ls = [(0, -1), (-1, 0), (0, 1), (1, 0)]
walk(0, 9)
maze_copy = list(maze)
x, y = 0, 1
n_way = 0
for way in success_procedure_ls:
i = 0
n_way += 1
print("第{}种方法:".format(n_way))
print(way)
for line in maze_copy:
maze[i] = list(maze_copy[i])
i += 1
for index in range(len(way) - 1):
if way[index + 1][x] == way[index][x] - 1:
maze[way[index][y]][way[index][x]] = "←"
elif way[index + 1][x] == way[index][x] + 1:
maze[way[index][1]][way[index][0]] = "→"
elif way[index + 1][y] == way[index][y] - 1:
maze[way[index][y]][way[index][x]] = "↑"
elif way[index + 1][y] == way[index][y] + 1:
maze[way[index][1]][way[index][0]] = "↓"
for row in maze:
for item in row:
if item not in [0, 1]:
print(item, end='')
else:
print(str(item) + ' ', end='')
print()
print('* ' * 100)
print("一共{}中方法".format(success_count))
运行结果
D:\Users\jjh\AppData\Local\Programs\Python\Python35\python.exe D:/Users/jjh/PycharmProjects/untitled/maze_new.py
第10行,第1列
第9行,第1列
第8行,第1列
第7行,第1列
第6行,第1列
死路
第7行,第2列
第7行,第3列
第7行,第4列
第6行,第4列
第6行,第5列
第5行,第5列
第4行,第5列
第4行,第4列
第4行,第3列
第4行,第2列
死路
第3行,第3列
第2行,第3列
第2行,第2列
第2行,第1列
第1行,第1列
死路
第1行,第3列
死路
第2行,第4列
第2行,第5列
第3行,第5列
死路
第5行,第3列
死路
第3行,第5列
第2行,第5列
第2行,第4列
第2行,第3列
第2行,第2列
第2行,第1列
第1行,第1列
死路
第1行,第3列
死路
第3行,第3列
第4行,第3列
第4行,第2列
死路
第4行,第4列
死路
第5行,第3列
死路
第6行,第6列
第6行,第7列
第5行,第7列
第4行,第7列
第3行,第7列
第2行,第7列
第1行,第7列
第1行,第6列
死路
第6行,第8列
死路
第7行,第7列
第8行,第7列
第8行,第8列
第8行,第9列
第8行,第10列
第7行,第10列
第6行,第10列
第5行,第10列
第5行,第9列
死路
第4行,第10列
第3行,第10列
第2行,第10列
success
第9行,第10列
第9行,第9列
死路
第10行,第10列
死路
第9行,第9列
第9行,第10列
第8行,第10列
第7行,第10列
第6行,第10列
第5行,第10列
第5行,第9列
死路
第4行,第10列
第3行,第10列
第2行,第10列
success
第10行,第10列
死路
第9行,第7列
第10行,第7列
第10行,第8列
死路
第7行,第5列
第8行,第5列
第9行,第5列
第10行,第5列
死路
第7行,第5列
第6行,第5列
第6行,第4列
死路
第5行,第5列
第4行,第5列
第4行,第4列
第4行,第3列
第4行,第2列
死路
第3行,第3列
第2行,第3列
第2行,第2列
第2行,第1列
第1行,第1列
死路
第1行,第3列
死路
第2行,第4列
第2行,第5列
第3行,第5列
死路
第5行,第3列
死路
第3行,第5列
第2行,第5列
第2行,第4列
第2行,第3列
第2行,第2列
第2行,第1列
第1行,第1列
死路
第1行,第3列
死路
第3行,第3列
第4行,第3列
第4行,第2列
死路
第4行,第4列
死路
第5行,第3列
死路
第6行,第6列
第6行,第7列
第5行,第7列
第4行,第7列
第3行,第7列
第2行,第7列
第1行,第7列
第1行,第6列
死路
第6行,第8列
死路
第7行,第7列
第8行,第7列
第8行,第8列
第8行,第9列
第8行,第10列
第7行,第10列
第6行,第10列
第5行,第10列
第5行,第9列
死路
第4行,第10列
第3行,第10列
第2行,第10列
success
第9行,第10列
第9行,第9列
死路
第10行,第10列
死路
第9行,第9列
第9行,第10列
第8行,第10列
第7行,第10列
第6行,第10列
第5行,第10列
第5行,第9列
死路
第4行,第10列
第3行,第10列
第2行,第10列
success
第10行,第10列
死路
第9行,第7列
第10行,第7列
第10行,第8列
死路
第8行,第5列
第9行,第5列
第10行,第5列
死路
第8行,第2列
死路
第8行,第2列
第7行,第2列
第7行,第1列
第6行,第1列
死路
第7行,第3列
第7行,第4列
第6行,第4列
第6行,第5列
第5行,第5列
第4行,第5列
第4行,第4列
第4行,第3列
第4行,第2列
死路
第3行,第3列
第2行,第3列
第2行,第2列
第2行,第1列
第1行,第1列
死路
第1行,第3列
死路
第2行,第4列
第2行,第5列
第3行,第5列
死路
第5行,第3列
死路
第3行,第5列
第2行,第5列
第2行,第4列
第2行,第3列
第2行,第2列
第2行,第1列
第1行,第1列
死路
第1行,第3列
死路
第3行,第3列
第4行,第3列
第4行,第2列
死路
第4行,第4列
死路
第5行,第3列
死路
第6行,第6列
第6行,第7列
第5行,第7列
第4行,第7列
第3行,第7列
第2行,第7列
第1行,第7列
第1行,第6列
死路
第6行,第8列
死路
第7行,第7列
第8行,第7列
第8行,第8列
第8行,第9列
第8行,第10列
第7行,第10列
第6行,第10列
第5行,第10列
第5行,第9列
死路
第4行,第10列
第3行,第10列
第2行,第10列
success
第9行,第10列
第9行,第9列
死路
第10行,第10列
死路
第9行,第9列
第9行,第10列
第8行,第10列
第7行,第10列
第6行,第10列
第5行,第10列
第5行,第9列
死路
第4行,第10列
第3行,第10列
第2行,第10列
success
第10行,第10列
死路
第9行,第7列
第10行,第7列
第10行,第8列
死路
第7行,第5列
第8行,第5列
第9行,第5列
第10行,第5列
死路
第7行,第5列
第6行,第5列
第6行,第4列
死路
第5行,第5列
第4行,第5列
第4行,第4列
第4行,第3列
第4行,第2列
死路
第3行,第3列
第2行,第3列
第2行,第2列
第2行,第1列
第1行,第1列
死路
第1行,第3列
死路
第2行,第4列
第2行,第5列
第3行,第5列
死路
第5行,第3列
死路
第3行,第5列
第2行,第5列
第2行,第4列
第2行,第3列
第2行,第2列
第2行,第1列
第1行,第1列
死路
第1行,第3列
死路
第3行,第3列
第4行,第3列
第4行,第2列
死路
第4行,第4列
死路
第5行,第3列
死路
第6行,第6列
第6行,第7列
第5行,第7列
第4行,第7列
第3行,第7列
第2行,第7列
第1行,第7列
第1行,第6列
死路
第6行,第8列
死路
第7行,第7列
第8行,第7列
第8行,第8列
第8行,第9列
第8行,第10列
第7行,第10列
第6行,第10列
第5行,第10列
第5行,第9列
死路
第4行,第10列
第3行,第10列
第2行,第10列
success
第9行,第10列
第9行,第9列
死路
第10行,第10列
死路
第9行,第9列
第9行,第10列
第8行,第10列
第7行,第10列
第6行,第10列
第5行,第10列
第5行,第9列
死路
第4行,第10列
第3行,第10列
第2行,第10列
success
第10行,第10列
死路
第9行,第7列
第10行,第7列
第10行,第8列
死路
第8行,第5列
第9行,第5列
第10行,第5列
死路
第1种方法:
[(0, 9), (0, 8), (0, 7), (0, 6), (1, 6), (2, 6), (3, 6), (3, 5), (4, 5), (5, 5), (6, 5), (6, 6), (6, 7), (7, 7), (8, 7), (9, 7), (9, 6), (9, 5), (9, 4), (9, 3), (9, 2), (9, 1), (9, 0)]
1 0 1 0 0 1 1 0 1 1
1 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 0 ↑
0 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 1 ↑
1 0 0 →→→↓1 0 ↑
→→→↑1 0 ↓0 0 ↑
↑1 0 0 1 0 →→→↑
↑0 1 0 1 0 1 0 1 1
↑0 1 0 1 0 1 1 0 1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
第2种方法:
[(0, 9), (0, 8), (0, 7), (0, 6), (1, 6), (2, 6), (3, 6), (3, 5), (4, 5), (5, 5), (6, 5), (6, 6), (6, 7), (7, 7), (8, 7), (8, 8), (9, 8), (9, 7), (9, 6), (9, 5), (9, 4), (9, 3), (9, 2), (9, 1), (9, 0)]
1 0 1 0 0 1 1 0 1 1
1 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 0 ↑
0 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 1 ↑
1 0 0 →→→↓1 0 ↑
→→→↑1 0 ↓0 0 ↑
↑1 0 0 1 0 →→↓↑
↑0 1 0 1 0 1 0 →↑
↑0 1 0 1 0 1 1 0 1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
第3种方法:
[(0, 9), (0, 8), (0, 7), (0, 6), (1, 6), (2, 6), (3, 6), (4, 6), (4, 5), (5, 5), (6, 5), (6, 6), (6, 7), (7, 7), (8, 7), (9, 7), (9, 6), (9, 5), (9, 4), (9, 3), (9, 2), (9, 1), (9, 0)]
1 0 1 0 0 1 1 0 1 1
1 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 0 ↑
0 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 1 ↑
1 0 0 1 →→↓1 0 ↑
→→→→↑0 ↓0 0 ↑
↑1 0 0 1 0 →→→↑
↑0 1 0 1 0 1 0 1 1
↑0 1 0 1 0 1 1 0 1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
第4种方法:
[(0, 9), (0, 8), (0, 7), (0, 6), (1, 6), (2, 6), (3, 6), (4, 6), (4, 5), (5, 5), (6, 5), (6, 6), (6, 7), (7, 7), (8, 7), (8, 8), (9, 8), (9, 7), (9, 6), (9, 5), (9, 4), (9, 3), (9, 2), (9, 1), (9, 0)]
1 0 1 0 0 1 1 0 1 1
1 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 0 ↑
0 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 1 ↑
1 0 0 1 →→↓1 0 ↑
→→→→↑0 ↓0 0 ↑
↑1 0 0 1 0 →→↓↑
↑0 1 0 1 0 1 0 →↑
↑0 1 0 1 0 1 1 0 1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
第5种方法:
[(0, 9), (0, 8), (0, 7), (1, 7), (1, 6), (2, 6), (3, 6), (3, 5), (4, 5), (5, 5), (6, 5), (6, 6), (6, 7), (7, 7), (8, 7), (9, 7), (9, 6), (9, 5), (9, 4), (9, 3), (9, 2), (9, 1), (9, 0)]
1 0 1 0 0 1 1 0 1 1
1 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 0 ↑
0 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 1 ↑
1 0 0 →→→↓1 0 ↑
1 →→↑1 0 ↓0 0 ↑
→↑0 0 1 0 →→→↑
↑0 1 0 1 0 1 0 1 1
↑0 1 0 1 0 1 1 0 1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
第6种方法:
[(0, 9), (0, 8), (0, 7), (1, 7), (1, 6), (2, 6), (3, 6), (3, 5), (4, 5), (5, 5), (6, 5), (6, 6), (6, 7), (7, 7), (8, 7), (8, 8), (9, 8), (9, 7), (9, 6), (9, 5), (9, 4), (9, 3), (9, 2), (9, 1), (9, 0)]
1 0 1 0 0 1 1 0 1 1
1 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 0 ↑
0 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 1 ↑
1 0 0 →→→↓1 0 ↑
1 →→↑1 0 ↓0 0 ↑
→↑0 0 1 0 →→↓↑
↑0 1 0 1 0 1 0 →↑
↑0 1 0 1 0 1 1 0 1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
第7种方法:
[(0, 9), (0, 8), (0, 7), (1, 7), (1, 6), (2, 6), (3, 6), (4, 6), (4, 5), (5, 5), (6, 5), (6, 6), (6, 7), (7, 7), (8, 7), (9, 7), (9, 6), (9, 5), (9, 4), (9, 3), (9, 2), (9, 1), (9, 0)]
1 0 1 0 0 1 1 0 1 1
1 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 0 ↑
0 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 1 ↑
1 0 0 1 →→↓1 0 ↑
1 →→→↑0 ↓0 0 ↑
→↑0 0 1 0 →→→↑
↑0 1 0 1 0 1 0 1 1
↑0 1 0 1 0 1 1 0 1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
第8种方法:
[(0, 9), (0, 8), (0, 7), (1, 7), (1, 6), (2, 6), (3, 6), (4, 6), (4, 5), (5, 5), (6, 5), (6, 6), (6, 7), (7, 7), (8, 7), (8, 8), (9, 8), (9, 7), (9, 6), (9, 5), (9, 4), (9, 3), (9, 2), (9, 1), (9, 0)]
1 0 1 0 0 1 1 0 1 1
1 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 0 ↑
0 1 1 1 1 0 1 0 0 ↑
0 0 1 0 1 0 1 0 1 ↑
1 0 0 1 →→↓1 0 ↑
1 →→→↑0 ↓0 0 ↑
→↑0 0 1 0 →→↓↑
↑0 1 0 1 0 1 0 →↑
↑0 1 0 1 0 1 1 0 1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
一共8中方法
进程已结束,退出代码0