2023-8-28 n-皇后问题

news2024/11/26 12:16:01

题目链接:n-皇后问题
在这里插入图片描述

第一种搜索顺序

#include <iostream>

using namespace std;

const int N = 20;

int n;
char g[N][N];
bool row[N], col[N], dg[N], udg[N];

void dfs(int x, int y, int s)
{
    if(y == n) y = 0, x ++;
    
    if(x == n)
    {
        if(s == n)
        {
            for(int i = 0; i < n; i++) cout << g[i] << endl;
            cout << endl;
        }
        return ;
    }
    
    // 尝试不放皇后
    dfs(x, y + 1, s);
    
    // 尝试放置皇后
    if(!row[x] && !col[y] && !udg[y - x + n] && !dg[x + y])
    {
        g[x][y] = 'Q';
        row[x] = col[y] = udg[y - x + n] = dg[x + y] = true;
        dfs(x, y + 1, s + 1);
        row[x] = col[y] = udg[y - x + n] = dg[x + y] = false;
        g[x][y] = '.';
    }
    

}

int main()
{
    cin >> n;
    
    for(int i = 0; i < n; i ++)
        for(int j = 0; j <n; j++)
            g[i][j] = '.';
    dfs(0, 0, 0);
    return 0;
}

第二种搜索顺序

#include <iostream>

using namespace std;

const int N = 20;

char g[N][N];
int n;
bool col[N], dg[N], udg[N];

// 这里的u代表的是一行
void dfs(int u)
{
    if(u == n)
    {
        for(int i = 0; i < n; i++) cout << g[i] << endl;
        cout << endl;
        return ;
    }
    
    for(int i = 0; i < n; i++)
        if(!col[i] && !dg[i - u + n] && !udg[u + i])
        {
            g[u][i] = 'Q';
            col[i] = dg[i - u + n] = udg[u + i] = true;
            dfs(u + 1);
            g[u][i] = '.';
            col[i] = dg[i - u + n] = udg[u + i] = false;
        }
    
}

int main()
{
    cin >> n;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            g[i][j] = '.';
    
    dfs(0);
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

水源井监控系统整体解决方案

1.1、系统组成水源井远程监控系统主要由监控中心、通信平台、水源井测控终端、现场启动柜设备组成。系统整体结构按功能可划分为采集层、网络层和应用层等三层&#xff0c;水源井测控终端主要实现采集层的功能&#xff0c;数据传输链路主要实现网络层的功能&#xff0c;中心端管…

ModaHub魔搭社区:将图像数据添加至Milvus Cloud向量数据库中

将图像数据添加至向量数据库中 图像分割裁剪完成后,我们就可以将其添加至 Milvus Cloud 向量数据库中了。为了方便上手,本项目中使用了 Milvus Lite 版本,可以在 notebook 中运行 Milvus 实例。接下来,使用 PyMilvus 连接至 Milvus Lite 提供的默认服务器。 这一步骤中,…

python 单向循环(环形)链表

不带头结点的单向循环链表的示意图 循环链表的应用场景【约瑟夫问题】 现假设 n 5&#xff08;一共有 5 个人&#xff09;&#xff0c;k 1&#xff08;从第 1 个人开始报数&#xff09;&#xff0c; m 2&#xff08;数 2 下&#xff09;&#xff0c;则出队编号的序列为&…

文件上传漏洞之条件竞争

这里拿upload-labs的第18关做演示 首先先看代码 $is_upload false; $msg null;if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_name $_FILES[upload_file][name];$temp_file $_FILES[upload_file][tmp_name];$file_ext substr($file_name,strrpos($file_…

如何编译打包OpenSSH 9.4并实现批量升级

1 介绍 openssh 9.4版本已于8月10号发布&#xff0c;安全团队又催着要赶紧升级环境里的ssh版本&#xff0c;本文主要介绍Centos5、Centos6、Centos7下openssh 9.4源码编译rpm包以及批量升级服务器openssh版本的方法。关注公众号后台回复ssh可获取本文相关源码文件。 https://w…

正则的匹配原理以及优化原则

正则之所以能够处理复杂文本&#xff0c;就是因为采用了有穷状态自动机&#xff08;finite automaton&#xff09;。那什么是有穷自动机呢&#xff1f;有穷状态是指一个系统具有有穷个状态&#xff0c;不同的状态代表不同的意义。自动机是指系统可以根据相应的条件&#xff0c;…

朋友圈也可以定时定量发送?

场景1&#xff1a;明天要搞活动&#xff0c;早中晚都得发朋友圈&#xff0c;一天要发3次朋友圈&#xff0c;要在手机上定好3个闹钟&#xff0c;这是一件非常麻烦的事。 场景2&#xff1a;有朋友是房产信息的&#xff0c;每天要发布很多二手房源&#xff0c;手动发圈太耗时间&a…

Eziriz .NET Reactor crack,代码中调用许可系统

Eziriz .NET Reactor crack,代码中调用许可系统 .NET reactor被描述为软件许可程序以及在.NET和程序集框架中编写的应用程序的安全代码。它是非常强大的代码保护以及软件系统的许可。无论用户在为.NET的Microsoft框架编译程序的过程中执行什么&#xff0c;该程序都可以向用户提…

[MyBatis系列⑥]注解开发

&#x1f343;作者简介&#xff1a;准大三本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐MyBatis系列①&#xff1a;增删改查 ⭐MyBatis系列②&#xff1a;两种Dao开发方式 ⭐MyBatis系列③&#xff1a;动态SQL ⭐MyBatis系列④&#xff1a;核心…

全新版本QStack云管系统3.5.3 附详细安装教程

源码介绍&#xff1a; QStack云管系统3.5.3&#xff0c;全新版本下载安装包详细搭建教程。 涵盖了服务器、云主机、代理IP等多种云产品管理运维和安全存储。 同时&#xff0c;QStack还支持对接运营众多公有云厂商产品资源&#xff0c;满足不同用户的需求。 通过开放API和插…

(java)进程和线程的联系和区别

目录 进程 1.进程具有独立性 ———— 虚拟地址空间 线程 为什么要引入多个线程&#xff1f; 多线程注意点 ⁜⁜总结&#xff1a;线程和进程的区别和联系⁜⁜ 进程 1.进程具有独立性 首先介绍一下 ———— 虚拟地址空间 在这之前还要了解一下 —— “物理内存”…

接口自动化测试攻略,必看!

为什么要做接口自动化 相对于UI自动化而言&#xff0c;接口自动化具有更大的价值。 为了优化转化路径或者提升用户体验&#xff0c;APP/web界面的按钮控件和布局几乎每个版本都会发生一次变化&#xff0c;导致自动化的代码频繁变更&#xff0c;没有起到减少工作量的效果。 而…

VS Code内存占用过高 - 解决方案

前言 使用VS Code时&#xff0c;其占用的内存可能会急剧增加&#xff0c;从而增加计算机内存的压力&#xff0c;下文介绍如何减少VS Code的内存占用。 通过此方案&#xff0c;本人从3G的内存占用降到了700M的内存占用。 解决方案 打开VS Code的设置&#xff0c;如下图&…

Keepalived(二)

实验一 KeepalivedLvsNginx 实现高可用集群&#xff0c;保证nginx服务正常运行 系统centos7 IP主机名作用192.168.28.141/24klmaster配置Keepalived&#xff08;Master&#xff09;、配置LVS&#xff0c;作为负载均衡器192.168.28.143/24klbackup配置Keepalived&#xff08;…

数据分析 | 特征重要性分析 | 树模型、SHAP值法

前言 在分析特征重要性的时候&#xff0c;相关性分析和主成分分析往往是比较简单的方法&#xff0c;相关性分析是通过计算特征与目标变量之间的相关系数来评估特征的重要性。它可以告诉我们特征和目标变量之间的线性关系程度&#xff0c;但对于非线性关系就无能为力了&#xff…

微前端:重塑大型项目的前沿技术

引言 随着互联网技术的飞速发展&#xff0c;前端开发已经从简单的页面制作逐渐转变为复杂的应用开发。在这个过程中&#xff0c;传统的前端开发模式已经难以满足大型项目的需求。微前端作为一种新的前端架构模式&#xff0c;应运而生&#xff0c;它旨在解决大型项目中的前端开…

C语言基础语法——数据类型

数据类型介绍 数据类型&#xff1a;数据所属的类型 数据类型的作用&#xff1a;编译器预算数据分配的内存空间大小 变量 变量的语法 在计算机程序中&#xff0c;变量是用来存储数据的一个内存区域&#xff0c;并用一个名字来表示这个区域。 在程序运行过程中&#xff0…

Android事件分发

Android事件分发是指触摸屏幕的事件分发&#xff0c;在手指触摸屏幕后所产生的一系列事件中&#xff0c;典型的事件类型有如下几种: MotionEvent.ACTION_DOWN ——手指刚接触屏幕MotionEvent.ACTION_MOVE——手指在屏幕上面滑动MotionEvent.ACTION_UP——手指从屏幕上松开的一…

C语言每日一题 ----计算日期到天数转换(Day 2)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C语言天天练 &#x…