八皇后问题
来源:互联网 发布:海典软件 垃圾 编辑:程序博客网 时间: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))