解题思路:具体的都在代码的注释啦

注意事项:

参考代码:

a = [] #构造一个列表来存储所有情况的和

lists = [] #构造一个列表来存储输入的八行八列列表

for i in range(8):  #此for循环用来输入

    b = list(map(int,input().split()))

    lists.append(b)

def queen(A,cur=0):#定义一个queen函数,传入两个变量,A是一个列表,cur是当前所在的行数

    sums = 0

    if cur == len(A): #如果当前的行数是第九行,也就是已经超过最后一行了,那么我们可以结束,并将A存入一个列表,方便之后计数

        for i in range(len(A)):

            sums += lists[i][A[i]]

        a.append(sums)

        return

    for col in range(len(A)): #如果还没有完成所有行的遍历,那么我们执行这个for循环,col代表的是列数,从0,1,2开始,也就是我们现在从0,1,2开始摆放皇后

        A[cur],flag= col,True  #将A的第cur行的第col列赋值皇后

        for row in range(cur): #这一步是开始对之前的行进行检查,比如我们已经到了第4行的皇后了,那我们需要对第1,2,3行的皇后进行考虑会不会违反规则

            if A[row] == col or abs(col - A[row]) == cur - row:  #具体的规则,前一个表示在同一列,后一个表示对角线

                flag = False   #如果这个成立,说明皇后不能摆在这个位置,所以跳出这个for循环,col值随之加一,继续循环,也就是在之后的列进行尝试

                break

        if flag:

            queen(A,cur+1)

queen([None]*8)  #queen作为一个函数,[None]*8则是代表一个列表,里面还有八个变量,即八皇后

print(max(a))


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论