爱奇艺八皇后问题

比一般的八皇后问题多了个限制条件,所以在判断是否冲突的函数里需要添加一个判断条件,就是对应的位置与给定的矩阵中的位置是否为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

相关推荐

千疮百孔的象牙塔:我也在捣鼓im,你这个im好奇怪的样子,单看简历get不到点,im的消息及时性,消息可靠性,然后系统的可扩展性这几个关键问题都是怎么解决的从简历描述get不到,具体说消息怎么传,消息怎么推送,消息怎么存,消息安全怎么做的这些点感觉对应不起来
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务