Golang-回溯-N皇后

该博客介绍了如何使用Go语言解决经典的N皇后问题,详细阐述了回溯算法的实现过程,包括放置皇后、判断合法性及回溯的逻辑。同时,展示了如何通过简单修改代码来切换输出所有解或只输出解的数量。文章最后强调了理解算法的重要性。

Golang解决N皇后问题~

问题:n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。不能互相攻击的情况是两个皇后不能在同一直线(横纵)或者同一对角线,只要存在这两种情况均不是解决方案!

例如:
当n等于4的时候可以有两种解,如下:
在这里插入图片描述
当n=1的时候,那就刚好只有一个解!

两种输出要求,一种是输出所有N皇后的情况,将结果列出来,另一种就是输出有多少种解。对于这两种不同的输出要求,我们可以采用同一段代码,只需修改其中一部分即可,走,看代码:

输出所有N皇后的情况,用[[".Q…","…Q",“Q…”,"…Q."],["…Q.",“Q…”,"…Q",".Q…"]]的形式输出!

var res [][]string //声明一个全局的存所有情况的二维切片~
func solveNQueens(n int) [][]string {
   
   
    res = make([][]string,0)//初始化~
    //由于字符串底层就是byte数组,所以用二维byte切片做棋盘!并声明初始化大小
    chessboard := make([][]byte, n)
	//初始化棋盘,全部置为 '.'
	for i := 0; i < n; i++ {
   
   
		chessboard[i] = make([]byte, n)
		for j := 0; j 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值