八皇后问题解决过程字符串可视化

查找到问题,暂停600毫秒,

穷举本行,200毫秒 

返回上一层之前,会弹出回滚上一层(4,X),并暂停600毫秒

成功返回时,会弹出上一层具体数据如(4,3)然后又暂停600毫秒

#include <iostream>
#include <windows.h>
using namespace std;
int q[100];
int count=0;void dispasolution(int n)
{count++;cout<<"第"<<count<<"个解";for(int i=0; i<=n; i++){cout<<"("<<i<<","<<q[i]<<")";}cout<<endl;
}bool place(int i,int j)
{if(i==1){return true;}int k=1;while(k<i)												// 1-i 行检查 ,因为每行放一个 ,所以 i 是 k 的界限{if((q[k]==j)||(abs(q[k]-j)==abs(i-k)))				// 这一行的皇后纵坐标是 j, 这一列有皇后就不能放。对角线即正方形,即行的距离和列的距离不能一样{return false;}k++;}return true;											// 穷举完发现正常,才退出}void show(int n)
{for(int i=1; i<=n; i++){for(int j=1; j<=n; j++){if(q[i]==j) cout<<"X";else cout<<"O";}cout<<endl;}
}void queen(int i,int n)
{char a[n+1][n+1]= {"O"};for(int i=1; i<=n; i++){for(int j=1; j<=n; j++){if(q[i]==j) a[i][j]='X';else a[i][j]='O';}cout<<endl;}if(i>n){system("cls");show(n);dispasolution(n);cout<<"发现一个解,如上图"<<endl;Sleep(2000);}else{for(int j=1; j<=n; j++)					// 从 j=1 开始,在第 i 行试探每一列 j{if(place(i,j))						// 如果成了,就记录通过检查的列{q[i]=j;for(int k=1; k<=n; k++)a[i][k]='O';a[i][j]='X';system("cls");for(int i=1; i<=n; i++){for(int k=1; k<=n; k++)cout<<a[i][k];cout<<endl;}cout<<"发现检查列的合适点""("<<i<<","<<j<<")"<<",开始进入下一层"<<endl;Sleep(600);queen(i+1,n);cout<<"本行穷举完毕,正在回滚上一层""("<<i<<","<<j<<")"<<endl;Sleep(600);}else{a[i][j]='*';system("cls");for(int i=1; i<=n; i++){for(int k=1; k<=n; k++)cout<<a[i][k];cout<<endl;}cout<<"正在穷举本行"<<"("<<i<<","<<j<<")"<<endl;Sleep(200);}}cout<<"本行穷举完毕,正在回滚上一层""("<<i-1<<","<<"X"<<")"<<endl;Sleep(600);}
}int main()
{int n=0;cout<<"n皇后问题(n<20)n="<<n<<endl;cin>>n;if(n>20) cout<<"n值太大,不能求解"<<endl;else{cout<<n<<"皇后问题求解问题如下"<<endl;queen(1,n);}}

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

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

相关文章

Java | Leetcode Java题解之第3题无重复字符的最长子串

题目&#xff1a; 题解&#xff1a; class Solution {public int lengthOfLongestSubstring(String s) {// 哈希集合&#xff0c;记录每个字符是否出现过Set<Character> occ new HashSet<Character>();int n s.length();// 右指针&#xff0c;初始值为 -1&#…

分治——归并排序算法

例题一 解法&#xff08;归并排序&#xff09;&#xff1a; 算法思路&#xff1a; 归并排序的流程充分的体现了「分⽽治之」的思想&#xff0c;⼤体过程分为两步&#xff1a; ◦ 分&#xff1a;将数组⼀分为⼆为两部分&#xff0c;⼀直分解到数组的⻓度为 1 &#xff0c;使…

【MySQL】DQL-分组查询-语法&where与having的区别&注意事项&可cv例题语句

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

【Web应用技术基础】CSS(6)——使用 HTML/CSS 实现 Educoder 顶部导航栏

第一题&#xff1a;使用flex布局实现Educoder顶部导航栏容器布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Educoder</title><script src"https://cdn.staticfile.org/jquery/1.1…

EDM营销文案的撰写技巧?如何提升转化率?

EDM营销文案与SEO策略如何结合&#xff1f;怎么写有效营销邮件&#xff1f; EDM仍然是一种高效且经济的推广手段。撰写优质的EDM营销文案&#xff0c;不仅可以提升品牌形象&#xff0c;还能有效促进销售转化。那么&#xff0c;如何撰写出引人入胜的EDM营销文案呢&#xff1f;A…

Anaconda conda常用命令

查看配置信息&#xff1a;conda config --show 恢复默认源&#xff1a;conda config --remove-key channels 创建虚拟环境&#xff1a;conda create -n env_name python3.8&#xff0c;表示创建python版本为3.8、名字为env_name的虚拟环境。 查看虚拟环境&#xff1a;conda …

Python点云处理(二十二)基于XGBoost的点云分类算法

目录 0 简述1 XGBoost2 点云特征向量构建3 用XGBoost进行分类4 代码实现5 结果展示0 简述 点云分类是计算机视觉领域中的一个重要任务,其主要目标是将三维空间中的点云数据划分为不同的类别。点云是由大量的三维点组成的数据集,通常由激光雷达或结构光等传感器采集而来。点云…

KNN算法 | K近邻:KD Tree、球树、KNN数据下采样策略

目录 一. KNN算法实现方式1. 蛮力实现(brute)2. KD树(kd_tree)3. 球树(ball_tree) 二. KD Tree算法1. 构建方式2. KD Tree 查找最近邻 三. 球树(Ball Tree)1. 构建方式 四. KNN评价1. 优点2. 缺点 五. 延申1. KNN数据下采样策略策略1策略2策略3策略4 Condensed Nearest Neighbo…

Leo赠书活动-23期 【Python数据分析】文末送书

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 赠书活动专栏 ✨特色专栏&#xff1a;…

大模型遇上心理健康咨询:MeChat、QiaoBan、SoulChat、MindChat四大心理健康领域微调模型总结

HealthX AI 2023-09-18 08:05 江苏 以下文章来源于老刘说NLP &#xff0c;作者刘焕勇 老刘说NLP. 老刘&#xff0c;NLP开源爱好者与践行者。主页&#xff1a;https://liuhuanyong.github.io。老刘说NLP&#xff0c;将定期发布语言资源、工程实践、技术总结等内容&#xff0c;…

C语言 06 无符号数

所有的数据底层都是采用二进制来进行保存的。 第一位用于保存符号位。 如果不考虑这个符号位&#xff0c;那么所有的数都是按照正数来表示。 比如考虑了符号位的 char 类型&#xff1a; 考虑符号表示范围&#xff1a;-128 ~ 127不考虑符号&#xff1a;0 ~ 255 直接使用这些不…

SublimeText3多次保存自动弹出窗口

文章目录 1. 取消自动更新2. 阻止程序与服务器进行通信3. 尝试保存&#xff0c;弹出不出现 1. 取消自动更新 在settings中加入&#xff1a; "update_check": false2. 阻止程序与服务器进行通信 在/etc/hosts&#xff08;Linux/macOS&#xff09;或C:\Windows\Syst…

C++代码eSpeak库使用示例

要将 eSpeak 库生成的 PCM 数据转换为 WAV 格式并保存&#xff0c;你可以使用 C 的标准文件操作来创建 WAV 文件&#xff0c;并将 PCM 数据写入其中。 #include <iostream> #include <vector> #include <cstdint> #include <cstring>extern "C&q…

Docker中常见的命令行

1 docker的全部命令 docker attach #连接到正在运行中的容器 docker build #使用 Dockerfile 创建镜像 docker builder #管理builds docker builder prune #清除build缓存 docker checkpoint #管理checkpoints docker checkpoint create #从正在运行的容器创建检…

数据结构——集合和静态查找表

集合&#xff1a;数据元素同属一个集合&#xff0c;具有关键字值&#xff08;键值&#xff09;key&#xff0c;数据元素之间没有逻辑关系&#xff0c;集合两大核心操作是查找和排序 查找表&#xff1a;用于查找的数据结构&#xff0c;分为静态查找表和动态查找表&#xff0c;静…

求将TXT文本转换为Word文档的方法

一&#xff0c;前言 在现代办公环境中&#xff0c;文本文件的转换已成为一项常见的任务。其中&#xff0c;将TXT文本转换为Word文档是最常见的需求之一。这种转换不仅可以帮助我们更好地编辑和格式化文本&#xff0c;还可以提高文件的安全性和兼容性。本文将详细介绍如何将TXT…

开源AI引擎:自然语言处理技术在人岗匹配中的应用

一、应用场景介绍 如何从海量的求职者中精准地匹配到合适的候选人&#xff0c;是每个人力资源部门都需要解决的问题。自然语言处理&#xff08;NLP&#xff09;技术的发展为人岗匹配提供了新的解决方案。通过信息抽取和文本分类技术&#xff0c;企业可以更高效地分析职位描述和…

刷题日记——重建二叉树专题

1.层序建树 给定一个二叉树的层序遍历序列&#xff0c;空节点用#表示&#xff0c;例如层序序列&#xff1a;“abc##de#g##f###”&#xff0c;其对应二叉树如下图所示&#xff1a; 分析 创建根节点 TreeNode * rootNULL创建一个队列&#xff0c;用于保存将要插入的位置&#x…

数据结构初阶:算法的时间复杂度和空间复杂度

什么是数据结构&#xff1f; 数据结构 (Data Structure) 是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的 数据元素的集合。 什么是算法&#xff1f; 算法 (Algorithm): 就是定义良好的计算过程&#xff0c;他取一个或一组的值为输入&#xff0c…

Linux第85步_EXTI外部中断

1、在stm32mp157d-atk.dts文件中添加“led0”和“key0”节点 打开虚拟机上“VSCode”&#xff0c;点击“文件”&#xff0c;点击“打开文件夹”&#xff0c;点击“zgq”&#xff0c;点击“linux”&#xff0c;点击“atk-mp1”&#xff0c;点击“linux”&#xff0c;点击“my_l…