中国开发网: 论坛: 程序员情感CBD: 贴子 241593
haitao
昨晚上不了cndev,倒是用python写了一个八皇后
#八皇后:
import datetime

class queen:
'''八皇后

'''
n=8
arr=[]
def __init__(self,an):
self.n=an
self.arr=[]
for i in range(0,self.n):
self.arr.append(0)
self.prt()
def prt(self):
s=''
for i in self.arr:
for j in range(0,self.n+1):
if j==i:
s += ' *'
else:
s += ' .'
s += '\n'
print s
def check_x(self,cy):
''' 0..cy-1 line, pos same as cy, return 1 else 0
'''
p=self.arr[cy]
for y in range(0,cy):
if self.arr[y]==p:
return 1
return 0
def check_xx(self,cy):
'''
'''
p=self.arr[cy]
for y in range(0,cy):
if abs(p-self.arr[y])==cy-y:
return 1
return 0
def check(self):
'''
'''
cy=1
needinc=False
while cy<self.n:
if needinc or self.check_x(cy)!=0 or self.check_xx(cy)!=0:
if self.arr[cy]<self.n-1:
self.arr[cy]=self.arr[cy]+1
needinc=False
else:
cy=cy-1
needinc=True
else:
cy=cy+1
if cy<self.n:
self.arr[cy]=0
self.prt()
def makeall(self):
'''
'''
cy=1
nn=0
needinc=False
dt=datetime.datetime(2005,1,2,11,23,44,123456)
dt0=dt.today()
dt=dt.today()
while cy>=0 and not (cy==0 and self.arr[cy]>=self.n):
if needinc or self.check_x(cy)!=0 or self.check_xx(cy)!=0:
#if cy<0 or cy>=self.n:
# print 'Error:cy=%d'%cy
# break
if self.arr[cy]<self.n-1:
self.arr[cy]=self.arr[cy]+1
needinc=False
else:
cy=cy-1
needinc=True
else:
#needinc==False
cy=cy+1
if cy<self.n:
self.arr[cy]=0
else:
nn=nn+1
print dt.today()
print '####No:%d'%nn
self.prt()
cy=cy-1
needinc=True
print 'All count=%d'%nn
print dt.today()-dt0

q=queen(8)
q.makeall()
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录