首页 > 其他分享 >n皇后问题

n皇后问题

时间:2024-12-28 12:30:04浏览次数:7  
标签:&&_ vis int -- ++ 问题 dep 皇后

我们首先从第一行开始放,然后对第一个皇后所在的这一行和这一列进行标记,再对四个角的地方进行标记,标记的就是接下来不能放的位置

#include <iostream>
using namespace std;
const int N=15;
int ans=0;
int vis[N][N];//开一个棋盘数组,用来进行标记
int n;
void dfs(int dep)//dep表示行
{
  if(dep==n+1)//当超过n时,也就是完成一次从第一行到最后一行的方案,ans++;
  {
    ans++;
    return;//退出,进入恢复现场,开始下一轮
  }
  for(int i=1;i<=n;i++)//开始遍历列,从第一列开始也就是vis[1][1],,然后是vis[1][2];
  {
    if(vis[dep][i])continue;//如果是标记过的,就跳过
    for(int _i=1;_i<=n;_i++)vis[_i][i]++;//对所在的列进行标记,不用标记所在的行,因为下一次从 
    下一行开始放
    //接下来对四个角所在的直线上的地方进行标记
    for(int _i=dep,_j=i;_i>=1&&_j>=1;_i--,_j--)vis[_i][_j]++;//左上角
    for(int _i=dep,_j=i;_i>=1&&_j<=n;_i--,_j++)vis[_i][_j]++;//右上角
    for(int _i=dep,_j=i;_i<=n&&_j>=1;_i++,_j--)vis[_i][_j]++;//左下角
    for(int _i=dep,_j=i;_i<=n&&_j<=n;_i++,_j++)vis[_i][_j]++;//右下角
    
    dfs(dep+1);//标记完后进入下一行
    
    //这后面的是恢复现场,也就是从第一行遍历到最后一行结束后对n*n的棋盘进行恢复,去掉标记
    //然后从第一行的第二列开始进行下一轮的遍历
    for(int _i=1;_i<=n;_i++)vis[_i][i]--;
    for(int _i=dep,_j=i;_i>=1&&_j>=1;_i--,_j--)vis[_i][_j]--;
    for(int _i=dep,_j=i;_i>=1&&_j<=n;_i--,_j++)vis[_i][_j]--;
    for(int _i=dep,_j=i;_i<=n&&_j>=1;_i++,_j--)vis[_i][_j]--;
    for(int _i=dep,_j=i;_i<=n&&_j<=n;_i++,_j++)vis[_i][_j]--;
  }
}
int main()
{
  cin>>n;
  dfs(1);//从1开始
  cout<<ans;
  return 0;
}

标签:&&_,vis,int,--,++,问题,dep,皇后
From: https://blog.csdn.net/2403_88685244/article/details/144785366

相关文章

  • 启动应用程序出现wtdccm.dll找不到问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 启动应用程序出现WSDScDrv.dll找不到问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 腾讯音乐:说说Redis脑裂问题?
    Redis脑裂问题是指,在Redis哨兵模式或集群模式中,由于网络原因,导致主节点(Master)与哨兵(Sentinel)和从节点(Slave)的通讯中断,此时哨兵就会误以为主节点已宕机,就会在从节点中选举出一个新的主节点,此时Redis的集群中就出现了两个主节点的问题,就是Redis脑裂问题。脑裂问题影响......
  • Win11小图标显示空白问题解决方法
    Win11小图标显示空白问题解决方法近期,不少升级到Windows11系统的用户遇到了一个桌面图标显示的问题:当将文件夹的查看方式设置为“小图标”时,软件图标无法正常显示,而是一片空白;但将查看方式切换到“中图标”或更大时,图标则能正常显示。这个问题困扰了不少用户,影响了桌面整......
  • 解决在 Cesium 中加载 QGIS 瓦片地图错乱的问题
    作为一个GIS研究生,平时接触到很多地理信息系统(GIS)相关的技术,今天想分享一下我的经验,尤其是如何解决在Cesium中加载QGIS导出的瓦片地图时出现的地图错乱问题。问题背景最近我在做一个与地理信息相关的项目,目的是将QGIS中下载的瓦片地图放入Cesium中进行三维渲染。正常......
  • 24-12-28-pytorch深度学习中音频I/O 中遇到的问题汇总
    文章目录pytorch深度学习中音频I/O中遇到的问题汇总问题1:音频文件格式的读取问题问题2:音频文件绘图问题小结pytorch深度学习中音频I/O中遇到的问题汇总问题1:音频文件格式的读取问题参考链接:torchaudio加载wav报错Couldn‘tfindappropriatebackendtohandle......
  • 【win10/11 技巧】利用mklink命令解决C盘空间不足问题
    前言首先,要回答三个问题:1.去除C盘哪里的文件(准备放到回收站删的):C:\Users\[你电脑的用户名]\AppData\2.大前提要求:文件删了软件还能正常用。3.用什么命令:命令行的mklink/j 命令4.必须要求:在别的盘有富余的空间  ①.AppData文件夹的来由和打开方法所谓“AppDa......
  • 项目报 OutOfMemoryError 、GC overhead limit exceeded 问题排查以及解决思路实战
    项目报OutOfMemoryError、GCoverheadlimitexceeded问题排查以及解决思路实战前言:问题现象描述:1,生产环境有个定时任务,没有初始化告警数据【告警数据量为1000多个】2,其他定时任务执行正常3,查询日志到定时任务执行之前有日志打印4,手动触发补偿告警定时任务接口报Out......
  • 单目标问题的烟花优化算法求解matlab仿真,对比PSO和GA
    1.程序功能描述单目标问题的FW烟花优化算法求解matlab仿真,对比PSO和GA。最后将FW,GA,PSO三种优化算法的优化收敛曲线进行对比。2.测试软件版本以及运行结果展示MATLAB2022A版本运行 3.核心程序fort=1:Iter%计算每个烟花适应度值fori=1:Npopyfit......
  • 如何解决“建立数据库连接时出错”的问题?
    当您尝试连接到MySQL数据库时,可能会遇到“建立数据库连接时出错”的提示。这种情况可能是由多种原因引起的,包括但不限于服务器配置错误、网络问题、数据库服务未启动、磁盘空间不足等。本文将详细探讨可能导致此问题的原因,并提供相应的解决方案。解决方案:检查数据库服务状态: ......