N皇后问题-(递归回溯)

news/2024/7/3 2:05:36

牛客网 BM59.

解题思路:

行列、斜叉不在一条直线上。

命令行为 row, 列为col, row 从0开始递归直到最后一行,列从0开始遍历,直到最后一列,中间每一步记录或清除位置状态,状态分为 m1[col] = 1, m2[row-col] = 1, m3[row+col] = 1。当row递归到最后一行时,即获取一个符合要求的答案。

代码:

package main
// import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 the n
 * @return int整型
*/
var m1 = map[int]int{}
var m2 = map[int]int{}
var m3 = map[int]int{}

var res = 0

func calc(row, n int) {
    if row == n {
        res++
        return
    }
    for col := 0; col < n; col++ {
        if m1[col] == 1 || m2[row-col] == 1 || m3[row+col] == 1 {
            continue
        }
        m1[col] = 1
        m2[row-col] = 1
        m3[row+col] = 1
        calc(row+1, n)
        m1[col] = 0
        m2[row-col] = 0
        m3[row+col] = 0
    }
}


func Nqueen( n int ) int {
    // write code here
    calc(0, n)
    return res
}


http://lihuaxi.xjx100.cn/news/1561277.html

相关文章

jvm深入研究文档--java中的堆--详解!--jvm底层探索(1)

阿丹&#xff1a; JVM的内存分区包括以下几个部分&#xff1a; 堆区&#xff08;Heap&#xff09; - 这是JVM的主要部分&#xff0c;用于存储实例对象和大多数Java对象&#xff0c;如数组和用户定义的类。方法区&#xff08;Method Area&#xff09; - 这是线程私有的&#x…

sourcetree 配置 gitlab ssh及公钥私钥设置

参考链接&#xff1a;Mac sourcetree 配置 ssh 密钥 - 简书 1.打开sourcetree --新建--从URL克隆&#xff0c;复制你项目的ssh 链接添加进去&#xff0c;如果没有配置就会提示&#xff1a; 这是一个无效的源路径/URL 2.打开sourcetree的设置 3.账户--添加 4.如图输入&#xf…

Ubantu 安装中文输入法

2、通过命令行安装搜狗输入法 sudo dpkg -i sogoupinyin_版本号_amd64.deb 注&#xff1a; 如果安装过程中提示缺少相关依赖&#xff0c;则执行如下命令解决&#xff1a; sudo apt -f install 3、注销计算机即可正常使用搜狗输入法 Ubuntu20.04安装搜狗输入法步骤 1、更…

二叉树的建立和前序,中序,后序,遍历(给定节点以及其之间的关系)

其中键值对的建立最为关键&#xff0c;不熟悉unorder_maphttps://blog.csdn.net/zou_albert/article/details/106983268?ops_request_misc%257B%2522request%255Fid%2522%253A%2522169528103016800211567279%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&…

alist windows桌面版下载安装

官网 Desktop | AList Docs 点击下载windows版本 安装 双击exe 修改安装路径 太可惜了&#xff0c;需要收费

安装清华源到你的 Python 环境中

有时候我们下载包的时候非常慢&#xff0c;加个清华源速度可以提高&#xff0c;但是如果每次安装包都需要在前面加一个清华源的链接就比较麻烦。 所以可以尝试下面的方法&#xff1a; 首先 你需要安装 pip 的镜像源到你的 Python 环境中&#xff0c;以便从清华大学镜像站下载软…

会C++还需要再去学Python吗?

提到的C、数据结构与算法、操作系统、计算机网络和数据库技术等确实是计算机科学中非常重要的基础知识领域&#xff0c;对于软件开发和计算机工程师来说&#xff0c;它们是必备的核心知识。掌握这些知识对于开发高性能、可靠和安全的应用程序非常重要。Python作为一种脚本语言&…

【uniapp】开发app运行到手机预览(运行到安卓app基座)

1、先安装App真机运行插件 2、手机打开调试模式&#xff08;开发者模式&#xff09;/打开usb安装&#xff0c;因为运行到手机需要下载安装手机端HBuilder调试基座… 3、运行到安卓app基座 4、等待安装好应用基座后便可以预览项目