【记录】学习python基础教程中使用生成器语法解决八皇后问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011930705/article/details/83781410

学习<<python基础教程>>中使用生成器语法解决八皇后问题
 

标题
def conflict(state, nextX):
	nextY = len(state)
	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

total=0
for solution in queens(8):
	total += 1
	print solution
print 'varity number:',total

猜你喜欢

转载自blog.csdn.net/u011930705/article/details/83781410
今日推荐