是小肖啊


私信TA

用户名:y52

访问量:490

签 名:

等  级
排  名 14619
经  验 873
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 苏州大学
专  业

  自我简介:

TA的其他文章

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

注意事项:

参考代码:

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 人评分

  评论区

  • «
  • »