八皇后GO语言实现

本文通过Go语言实现了一个解决八皇后问题的程序。该程序能够找出所有可能的解,并使用简单的字符来展示每一种解法。它通过递归回溯的方式进行搜索,同时检查每个放置的皇后是否与其他皇后冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值