爱奇艺八皇后问题

比一般的八皇后问题多了个限制条件,所以在判断是否冲突的函数里需要添加一个判断条件,就是对应的位置与给定的矩阵中的位置是否为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
#爱奇艺##算法工程师#
全部评论
黑白不能在一个位置上。。两轮8皇后,过了80,然而超时(python)
点赞 回复 分享
发布于 2017-09-10 21:14

相关推荐

认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务