小蓝的玩具蛇
昨天还写了一题求N!的阶乘的
题目介绍
思路
1.有16个格子,每个格子用dfs算出可能的路径
代码
"""
Author:Anderson
Date:2020-11-15
"""
def move(dir, i, j):
global map
if dir == 0: # 上
if i <= 0 or map[i - 1][j] == 1:
return False
else:
return True
if dir == 1: # 下
if i >= 3 or map[i + 1][j] == 1:
return False
else:
return True
if dir == 2: # 左
if j <= 0 or map[i][j - 1] == 1:
return False
else:
return True
if dir == 3: # 右
if j >= 3 or map[i][j + 1] == 1:
return False
else:
return True
def dfs(d, i, j):
global map
global ans
if d==15:
ans=ans+1
return 0
if move(0, i, j):
map[i - 1][j] = 1
dfs(d + 1, i - 1, j)
map[i - 1][j] = 0
if move(1, i, j):
map[i + 1][j] = 1
dfs(d + 1, i + 1, j)
map[i + 1][j] = 0
if move(2, i, j):
map[i][j - 1] = 1
dfs(d + 1, i, j - 1)
map[i][j-1] = 0
if move(3, i, j):
map[i][j + 1] = 1
dfs(d + 1, i, j + 1)
map[i][j + 1] = 0
ans=0
map=[[0]*4 for i in range(4)]
for i in range(4):
for j in range(4):
map[i][j]=1
dfs(0,i,j)
map[i][j]=0
print(ans)