网站底部版权信息模板,开发app的费用,扬州seo,wordpress大学 永久链接题目
小蓝有—条玩具蛇#xff0c;一共有16节#xff0c;上面标着数字1至16。每—节都是一个正方形的形状。相邻的两节可以成直线或者成90度角。 小蓝还有一个44的方格盒子#xff0c;用于存放玩具蛇#xff0c;盒子的方格上依次标着字母A到Р共16个字母。 小蓝可以折叠自…题目
小蓝有—条玩具蛇一共有16节上面标着数字1至16。每—节都是一个正方形的形状。相邻的两节可以成直线或者成90度角。 小蓝还有一个4×4的方格盒子用于存放玩具蛇盒子的方格上依次标着字母A到Р共16个字母。 小蓝可以折叠自己的玩具蛇放到盒子里面。他发现有很多种方案可以将玩具蛇放进去。 下图给出了两种方案: 请帮小蓝计算一下总共有多少种不同的方案。如果两个方案中存在玩具蛇的某一节放在了盒子的不同格子里则认为是不同的方案。
分析
很明显的DFS只需要定义方向然后注意不要越界每次放置好一段之后需要标记标记完之后再接着搜索搜完之后要删除标记。
代码
num [[0] * 4 for i in range(4)]
direction [[1, 0], [-1, 0], [0, 1], [0, -1]]
ans 0
def dfs(x, y, count):global ansif count 16:ans 1returnfor i in range(4):dx x direction[i][0]dy y direction[i][-1]if 0 dx 4 and 0 dy 4 and num[dx][dy] 0:num[dx][dy] 1dfs(dx, dy, count1)num[dx][dy] 0
for i in range(4):for j in range(4):num[i][j] 1dfs(i, j, 1)num[i][j] 0
print(ans)