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

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

被折叠的 条评论
为什么被折叠?



