简单的n皇后问题,用swift3写的。
// // main.swift // queen // // Created by Esion on 2017/4/16. // Copyright © 2017年 Esion. All rights reserved. // import Foundation var x=[Int]() func ishere(x:[Int],p:Int)->Bool{ //判断是否可置入 for i in 1...p-1{ if(x[i]==x[p]||abs(x[i]-x[p])==abs(i-p)){ return false } } return true } func queen(n:Int){ var p = 1 x.append(0) x.append(0) while(p<=n){ x[p] += 1 if(p>1){ while(x[p]<=n && !ishere(x: x, p: p)){ x[p]+=1 } } if(x[p]<=n){ if(p == n){ break; }else{ p += 1 x.append(0) } }else{ //回溯 x[p]=0 p -= 1; } } } var n=30; queen(n: n) for i in 1...n{ print(x[i]) }