[蓝桥杯python] 车的放置
问题描述
在一个n*n的棋盘中,每个格子中至多放置一个车,且要保证任何两个车都不能相互攻击,有多少中放法(车与车之间是没有差别的)
1、资源限制
资源限制
时间限制:1.0s 内存限制:256.0MB
2、输入格式
包含一个正整数n
3、输出格式
一个整数,表示放置车的方法数
4、样式输入及输出
样例输入
2
样例输出
7
5、代码及解析
具体解析请大家自己看一下代码中的备注,在此不多做解释。
n = int(input())
result = 1
visited = [0] * n #记录这一行时候已经放置的棋子
def DFS(row,visited):
global result
if row >= n:
return
for i in range(n):
if visited[i] == 0:
visited[i] = 1
result += 1
DFS(row+1,visited) #该行放置了棋子,再找下一行
visited[i] = 0
DFS(row+1,visited) #不放棋子的情况
DFS(0,visited)
print(result)
结果:
自己写的所以有点复杂,但是至少能完成嘿嘿。如果各位有优化欢迎评论区讨论!!