解题思路:具体的都在代码的注释啦
注意事项:
参考代码:
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 人评分
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:703 |
C二级辅导-统计字符 (C语言代码)浏览:782 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:627 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:610 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:998 |
用筛法求之N内的素数。 (C语言代码)浏览:1385 |
printf基础练习2 (C语言代码)浏览:826 |
WU-图形输出 (C++代码)浏览:836 |
剪刀石头布 (C语言代码)浏览:1792 |
WU-C语言程序设计教程(第三版)课后习题11.11 (C++代码)(想学链表的可以看看)浏览:1464 |