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) }
有疑问加站长微信联系(非本文作者)