[蓝桥杯python] 车的放置:在一个n*n的棋盘中,每个格子中至多放置一个车,且要保证任何两个车都不能相互攻击,有多少中放法(车与车之间是没有差别的)

 [蓝桥杯python] 车的放置

1、资源限制

2、输入格式

3、输出格式

4、样式输入及输出

5、代码及解析

大功告成!编写不易,大家成功后点个关注or赞谢谢~


问题描述

在一个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)

结果:

 


 自己写的所以有点复杂,但是至少能完成嘿嘿。如果各位有优化欢迎评论区讨论!!

大功告成!编写不易,大家成功后点个关注or赞谢谢~~


猜你喜欢

转载自blog.csdn.net/Callme_TeacherPi/article/details/123856817
今日推荐