爱奇艺八皇后问题
比一般的八皇后问题多了个限制条件,所以在判断是否冲突的函数里需要添加一个判断条件,就是对应的位置与给定的矩阵中的位置是否为0.
可是改进后的算法只能40%,跪求大佬给出解答!
#coding = utf-8
import sys
def conflict(state, nextX):
nextY = len(state)
if con[nextY][nextX] == 0:
return True
for i in range(nextY):
if abs(state[i]-nextX) in (0, nextY-i):
return True
return False
def queens(num = 8, state=()):
for pos in range(num):
if not conflict(state, pos):
if len(state) == num-1:
yield (pos,)
else:
for result in queens(num, state + (pos,)):
yield(pos,) + result
if __name__ == "__main__":
try:
n = int(sys.stdin.readline().strip())
i = 0
con = []
while i < n:
l = [int(x) for x in sys.stdin.readline().strip().split(' ')]
con.append(l)
i += 1
ans = len(list(queens(n)))
print ans
except:
pass
#爱奇艺##算法工程师#