如何用递归解决n皇后问题?

2023-11-19

问题描述:在n*n的棋盘中摆放n个皇后,要求每个皇后不攻击,输出所有的解

输入:一个正整数n

输出:所有的解

例如:输入:4

输出:

2,4,1,3(输出的第1个数的数值x表示,该皇后放在第一行的第x列)

3,1,4,2

#include<iostream>
 using namespace std;
int N;
int queenpos[100];
void fun(int k)//在0到k-1行皇后已经摆放好的情况下,摆放第k行及其后的皇后
{
    int i;
    if (k==N)//表明第k行皇后已摆放好
    {
        for ( i = 0; i < N; i++)
        {
            cout << queenpos[i] + 1 << " ";//输出皇后的位置,i+1代表皇后的位置行数
                                            //queenpos[i]+1代表皇后的列数
        }
        cout << endl;
        return;
    }
    for ( i = 0; i < N; i++)//逐步尝试第K个皇后的位置
    {
        int j;
        for ( j = 0; j < k; j++)//和已经摆放好的K个皇后的位置比较,看是否冲突
        {
            if (queenpos[j]==i||abs(queenpos[j]-i)==abs(k-j))
            {
                break;//如果冲突则进行下一个测试
            }
            
        }
        if (j == k)
        {
            queenpos[k] = i;
            fun(k + 1);
        }
    }

}
int main()
{
    cin >> N;
    fun(0);
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用递归解决n皇后问题? 的相关文章

随机推荐

  • linux之命名空间

    1 什么是命名空间 Linux中的命名空间 namespaces 是一种轻量级的虚拟化技术 ps docker就是依赖这个原理实现的 让进程看起来像是在自己的独立系统中运行 也就是说进程只能看到相同命名空间内的进程和资源 而看不到其他命名空
  • PG向表中添加新列时判断存在性

    以下是可以在命令行中执行的 SQL 语句 用于向表中添加新列并判断存在性 DO BEGIN BEGIN ALTER TABLE your table name ADD COLUMN IF NOT EXISTS your column nam
  • 服务器torchserver部署全流程踩坑记录

    服务器torchserver部署全流程踩坑记录 部署结果展示 一 Python环境 一 创建虚拟环境 二 安装torch cuda等 三 Python环境移植 二 java jdk环境 一 java jdk安装 1 sudo安装 需要sud
  • 使用selenium爬取唯品会

    使用selenium爬取唯品会 1 基本步骤 2 通过程序控制浏览器下拉滚动条获取加载信息 3 完成这个爬虫程序 使用selenium爬取动态加载的网页 爬取唯品会的商品 1 基本步骤 首先 创建一个浏览器驱动driver 查看唯品会页面u
  • 我的世界服务器聊天显示坐标,我的世界端游怎么显示坐标

    手机游戏cf的VIP等级会显示在最终游戏CF上吗 H 是的 无需感谢 我的世界如何环绕 单击显示不坐吗 前提是必须有一个区域插件 用木斧对角指向两个点 住所 牛仔竞技插件 您只能绘制自己的区域 其他 无法破坏或改变您的领土 每个玩家可以拥有
  • OpenCV机器视觉-识别红绿颜色

    识别红绿颜色 识别车道线 车道线检测 使用opencv来完成一个车道线检测的案例 完成这样的案例我们需要经历哪些步骤呢 我们先来思考一下解决问题的思路 当前情况下 摄像头拍出了很多的东西 例如路边的杂草远方的山 但是在我们自动驾驶的过程中
  • 【华为OD机试真题】补种未成活胡杨(C&C++&java&python&JavaScript&go)100%通过率【2023(B卷)100分】

    补种未成活胡杨 题目描述 近些年来 我国防沙治沙取得显著成果 某沙漠新种植 N 棵胡杨 编号 1 N 排成一排 一个月后 有 M 棵胡杨未能成活 现可补种胡杨 K 棵 请问如何补种 只能补种 不能新种 可以得到最多的连续胡杨树 输入描述 N
  • 【Android】Android ANR产生过程与分析方法

    前言 Android ANR问题一直是比较难解决的问题 一来它比较难以复现 二来复现后也不太好分析 这篇文章梳理一下ANR产生的过程以及出现ANR拿到日志文件如何定位原因 其实关于ANR线上监控也是比较棘手的 看了这篇文章我们再去看一些AN
  • linux内存调节之CMA

    本文贴代码过头了 以后想起来再优化一下吧 目录 概述 数据结构 构建初始化 DTS CONFIG DMA CMA 页表与物理页初始化 分配器激活 分配器使用 CMA部署 实战 概述 CMA Contiguous Memory Allocat
  • 小松的STM32教程(13)—— 驱动外部内存24C02

    预备 学习目标 概述 24cxx c include 24cxx h include delay h include delay h void IIC Init void GPIO InitTypeDef GPIO InitStructur
  • 数据结构之图的两种遍历实现(C语言版)

    上一期文章分享完了图的两种遍历方式 也是两种很重要的算法 DFS和BFS 这两种算法的应用和重要性我就不多说了 内行的人懂的都懂 今天这文章重要就是来上机实现这两种算法 又由于这两种算法都可以由邻接矩阵和邻接表来表示 博主分享的代码都是上机
  • pytorch c10.dll找不到

    import torch optim as optim File D Python38 lib site packages torch init py line 135 in
  • Matlab 编辑器框与命令行框视图分开两个窗口

    之前不知道怎么弄的 将matlab编辑器视图和命令行视图变成了两个窗口 效果如下图 这样调试代码我很不适应 点了好久才发现这叫停靠 点击编辑器窗口右上角 选择停靠 就能将编辑器窗口与命令行窗口在同一界面上
  • EduCoder_web实训作业--文本层次语义元素

    第一关 A D B B 第二关 strong 重要通知 strong
  • php GD库的使用

    两大功能 自己画 对于原有图片改变 PHP中GD库的使用 PHP 不仅限于只产生 HTML 的输出 还可以创建及操作多种不同格式的图像文件 PHP提供了一些内置的图像信息函数 也可以使用GD函数库创建新图像或处理已有的图像 目前GD2库支持
  • Java读取文件-BufferedReader/FileReader/InputStreamReader/FileInputStream的关系和区别

    一 Java读取和存储文件数据流 Java读取文件 实际是将文件中的字节流转换成字符流输出到屏幕的过程 这里面涉及到两个类 InputStreamReader和OutputStreamWriter InputStreamReader 将字节
  • 人工智能-基于U^2-Net的肖像画生成算法

    算法总体是在去年提出的U 2 Net remove background 的基础上实现了人物肖像的生成 并且较好地将细节复刻了下来 论文地址 https arxiv org pdf 2005 09007 pdf GitHub项目 https
  • Opencv图像增强算法(对比度增强)-opencv

    由于项目需要 这几天找了网上一个基于opencv的图像对比度增强算法的博客 但算法发布的日期太过久远了 2012年的代码放到现在很多类和类方法已经不再适用于新版本的opencv库了 所以我花了点时间重写了一下 并加入一些个人对于算法的理解与
  • Embedded image missed after moving page to another space in Confluence

    There is a resolution https confluence atlassian com display CONFKB Resolve Missing Attachments in Confluence The issue
  • 如何用递归解决n皇后问题?

    问题描述 在n n的棋盘中摆放n个皇后 要求每个皇后不攻击 输出所有的解 输入 一个正整数n 输出 所有的解 例如 输入 4 输出 2 4 1 3 输出的第1个数的数值x表示 该皇后放在第一行的第x列 3 1 4 2 include