简单的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])
}