八皇后问题

来源:互联网 发布:海典软件 垃圾 编辑:程序博客网 时间:2024/05/06 05:37
#n=int(input("? queens problem\n"))n=8     #8 queens problem,n>=4c=[0 for i in range(n)]     #用c[i]表示第i行皇后的列编号total=0     #解的总数def search(current):    global total    if current == n:    #递归边界,current == 8 means 前面的八个选择都是合法的(0->7)        total+=1        #打印每一个合法解        #print('')        #for m in range(n):            #print("("+str(m)+","+str(c[m])+")",end=' ')    else:        for i in range(n):      #枚举每一行选择哪一列            ok=1                           c[current]=i            for j in range(current):    #检查以后与前面的选择冲突                if c[current]==c[j] or current-j==c[current]-c[j] or current-j==c[j]-c[current]:                   ok=0                   break;            if(ok==1):      #合法,继续递归                   search(current+1)search(0)#打印解的个数print("\n"+str(total))