Chinaunix首页 | 论坛 | 博客
  • 博客访问: 185692
  • 博文数量: 69
  • 博客积分: 1430
  • 博客等级: 上尉
  • 技术积分: 686
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-22 11:12
文章存档

2011年(1)

2010年(11)

2009年(35)

2008年(22)

我的朋友

分类: LINUX

2009-06-25 23:15:40

  用蛮力法解决,耗了三分钟,一共得到了92个解,不知道有谁有解的个数的确切数字。最近迷python,就用它来实现了,水平有限,请各位高手指点。拿了个人家实现,几乎在1s内就实现了,哎,惭愧阿,我要摆脱蛮力法。
   PS:今天利用闲暇时间想了想,要提高效率,最终就是要给出0-7八个数字的全排列,这样测试空间就会小很多。不过我还没有想出如何给出一个比较高效的全排列。

import time

def display (x):
    i = 0
    while i<8:
        print x[i]
        i+=1

def display_method (method):
    x = [[0 for i in range(8)] for j in range(8)]
    for i in range(8):
        x[method[i][0]][method[i][1]]=1
    display(x)

def stupid_method():
    index=1
    for pos1 in range(8):
        for pos2 in range(8):
            for pos3 in range(8):
                for pos4 in range(8):
                    for pos5 in range(8):
                        for pos6 in range(8):
                            for pos7 in range(8):
                                for pos8 in range(8):
                                    if True ==test(pos1 ,pos2 ,pos3,pos4,pos5,pos6,pos7,pos8):
                                        print "This is "+str(index) + " method"
                                        index+=1

def test(pos1 ,pos2 ,pos3,pos4,pos5,pos6,pos7,pos8) :
    method =([0,pos1],[1,pos2],[2,pos3],[3,pos4],[4,pos5],[5,pos6],[6,pos7],[7,pos8])
    for i in range(8):
        for j in range(i+1,8):
            if attack(method[i],method[j])==True:
                return False
    print "**************************"
    display_method(method)
    return True

def attack(x,y):
    if x[1] == y[1]:
        return True
    if ((x[0]-y[0])**2) == ((x[1]-y[1])**2):
        return True
    return False

x = [[0 for i in range(8)] for j in range(8)]

cur_time1=time.time()
print "Start time "+time.strftime( "%Y-%m-%d %X", time.localtime() )
stupid_method()
cur_time2=time.time()
print "End time "+time.strftime( "%Y-%m-%d %X", time.localtime() )
print "Waste time "+str(cur_time2-cur_time1)+" seconds"

阅读(2008) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~