package main
import (
"fmt"
)
const Num int=8
var count int=1
var quees[Num][Num] int
func print(){
fmt.Printf("第%d种解法:\n",count)
for i:=0;i<Num;i++ {
for j:=0;j<Num;j++ {
if quees[i][j]==1 {
fmt.Printf("%s ","■")
}else {
fmt.Printf("%s ","□")
}
}
fmt.Println()
}
}
func setQueen(row,col int) bool {
if row==0 {
quees[row][col]=1
return true
}
for i:=0;i<Num;i++ {
if quees[row][i]==1 {
return false
}
}
for i:=0;i<Num;i++ {
if quees[i][col]==1 {
return false
}
}
for i,j:=row,col;i<Num && j<Num;i,j=i+1,j+1 {
if quees[i][j]==1 {
return false
}
}
for i,j:=row,col;i>=0 && j>=0;i,j=i-1,j-1 {
if quees[i][j]==1 {
return false
}
}
for i,j:=row,col;i<Num && j>=0;i,j=i+1,j-1 {
if quees[i][j]==1 {
return false
}
}
for i,j:=row,col;i>=0 && j<Num;i,j=i-1,j+1 {
if quees[i][j]==1 {
return false
}
}
quees[row][col]=1
return true
}
func solve(row int) {
if row==Num {
print()
count++
return
}
for i:=0;i<Num;i++ {
if setQueen(row,i) {
solve(row+1)
}
quees[row][i]=0
}
}
func main() {
solve(0)
}
八皇后GO语言实现
最新推荐文章于 2021-04-22 09:31:48 发布