关于8皇后解决方法的浅析

2023-05-16

关于8皇后解决方法的浅析

众所周知,解决8皇后最普遍的方法是回溯法
那具体是怎么样的呢?

大概思路

  1. 定义一个int型数组queen,角标(1.2…7)代表皇后所在的行,值代表皇后所在的列
  2. 定义一个函数来进行以下步骤
  3. 弄一个循环,从第0列到第7列,给queen[i]赋值,也就是给第i行的皇后确定其所在的列,而且要每一列都要试一遍
  4. 制作一个函数,可以检查queen[i]得到的列是否符合“八皇后”的要求(即每一个皇后的同一行、同一列、对角线上不能再有另一个皇后) (怎么做这个函数后面详细说)
  5. 检查完之后,如果符合,那就开始调用自身这个函数,开始给下一行的皇后赋值;如果不符合,那就进入i++,给这一行的皇后换一列(重点!!!)(回溯法)
  6. 当i等于8的时候,也就是所有行的皇后都有自己的列的时候,就另外做一个函数,打印出来即可
  7. 检查函数:传入的参数是需要检查的皇后所在的行i,传入行之后,需要从第0行检查到第i-1行,如果列数相同(即同一列)或者列数之差等于行数之差(即在对角线上),就返回0,不然就返回1
  8. 展示函数:要打印8行8列,自然可以两个for循环嵌套,再来一个if判断,如果打印第i行打印到第j列,queen[i]=j(即这一行的皇后的列数刚好是在打印的列数)打印Q,不然就打印-(这个可以随意选择)
void eight_queen(int row){
	if(row<N){
		for(int i=0;i<N;i++){
		queens[row]=i;
		if(check(row))
			eight_queen((row+1));				
		}		
	}
	else {
		sum++;
		show();
	}
}
int check(int row){
	for(int i=0;i<row;i++){
		if(queens[row]==queens[i]||abs(queens[row]-queens[i])==(row-i))
		 	return 0;
		
	}
	return 1; 
}
void show(void){
	printf("\n\nthis is solution no.%d\n\n",sum);
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<N;j++){
			if(queens[i]==j)
				printf("Q");
			else printvoid show(void){
	printf("\n\nthis is solution no.%d\n\n",sum);
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<N;j++){
			if(queens[i]==j)
				printf("Q");
			else printf("-");
		}
		printf("\n");	
	}

}

 int main(){
	 int row=0;
	 eight_queen(row);
}

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

关于8皇后解决方法的浅析 的相关文章

随机推荐

  • 单片机寄存器的理解

    学习目标 xff1a 对寄存器的理解 学习内容 xff1a 本来在学DMA xff0c 突然看到江科大的b站视频 xff0c 在他的DMA视频中对寄存器进行了理解 xff0c 我觉得十分巧妙 xff0c 这是当时截的图 xff0c 中间竖着
  • python 类变量详解

    强烈建议先看我之前的面向对象基本了解 python中 xff0c 类变量又叫做类属性 然而类属性有分为3个不同的类型 类属性 xff0c 实例属性 xff0c 局部变量 class a 类属性 hobby 61 39 play sport
  • Python运行环境Ngrok内网穿透

    这次就教大家怎么在手机或机顶盒上运行Ngrok内网穿透 首先下载安卓上的Python运行环QPython apk 官网 http www qpython com 下载完后开始安装 xff0c 怎么安装安卓软件不用我怎么教了吧 复制pytho
  • 记一次PWN机(Vmware和Docker+VNC)的搭建

    基于Vmware搭建虚拟机 学长已经提供了镜像 xff0c 在Vmware界面打开那个镜像 xff0c 开机即可 Vmware和镜像下载地址 xff1a 链接 xff1a https pan quark cn s 057a23e631f5
  • vue.runtime.esm.js?2b0e:619 [Vue warn]: Invalid prop: type check failed for prop “index“. Expected S

    vue runtime esm js 2b0e 619 Vue warn Invalid prop type check failed for prop 34 index 34 Expected String with value 34 1
  • 解决vscode上边菜单栏不显示的问题

    由于我们不小心点击了哪个键 xff0c 导致上边的菜单栏不显示 两种解决方案 方法一 xff1a 点击下面的这个按钮 xff0c 会弹出一个弹框 点击一下菜单栏的可见性 xff0c 即可出来 方式二 xff1a 使用快捷键Ctrl 43 S
  • node+vue搜索和分页功能实现

    前端代码 lt template gt lt div class 61 34 main box 34 gt lt 卡片区 gt lt el card gt lt 搜索 gt lt el input placeholder 61 34 请输入
  • React面试题最全

    1 什么是虚拟DOM xff1f 虚拟DOM是真实DOM在内存中的表示 xff0c ul的表示形式保存在内存中 xff0c 并且与实际的DOM同步 xff0c 这是一个发生在渲染函数被调用和元素在屏幕上显示的步骤 xff0c 整个过程被称为
  • vue项目页面空白但不报错产生的原因分析

    vue项目中我们请求一个路由 xff0c 打开页面发现页面是空白的 xff0c 产生的主要原因有四种 xff1a 1 路由重复 如果配置了两个路由是重复的 xff0c 比如配置了两个 path xff0c 那么访问就会看到空白页面 xff0
  • react--电商商品列表使用

    目录 整体页面效果 项目技术点 拦截器的配置 主页面 添加商品 分页 xff0c 搜索 修改商品 删除商品 完整代码 整体页面效果 项目技术点 antd组件库 xff0c 64 ant design icons antd的图标库axios
  • 服务器端升级或者切换node版本

    1 查看版本 nvm list 2 选择你需要的版本 nvm use v18 15 0
  • lodash防抖节流

    应用场景 xff1a 当用户高频率的触发事件 xff0c 事件较短 xff0c 内部出现卡顿现象 解决方法 xff1a 防抖节流 防抖节流功作用 xff1a 主要目的是为了降低高频事件触发 xff0c 减少dom操作或请求次数 xff0c
  • 使用webpack(4版本)搭建vue2项目

    在学习webpack之前 xff0c 也从网上搜过一些用webpack搭建vue项目的博客 xff0c 但是在自己使用的时候会报各种的问题 xff0c 报错的根本原因其实就是版本的问题 xff0c 以下代码是经过解决了许多报错问题研究出来最
  • VUE调用摄像头PC

    页面效果 实现代码 lt template gt lt div id 61 34 app 34 gt lt router view gt lt 开启摄像头 gt lt Button type 61 34 primary 34 64 clic
  • koa2的脚手架koa-generator使用

    我们在搭建项目的时候 xff0c 会使用一些脚手架 xff0c 今天我们使用koa2的脚手架koa generator 使用非常简单 首先 xff0c 我们需要全局安装 npm install g koa generator 创建项目 ko
  • css行内元素、块元素、行内块元素的区别

    行内元素的特点 xff1a 1 和其他元素在一行显示 2 元素的宽度 高度 行高及底部边距不可编辑 3 元素的宽度就是它包含的文字或图片的宽度 xff0c 不可改变 4 行内元素只能容纳纯文本或者是其他的行内元素 xff08 a标签除外 x
  • STM32CubeMX安装

    一 STM32CubeMX下载 官网地址 xff1a STM32CubeMX STM32Cube初始化代码生成器 意法半导体STMicroelectronics 官网下载需要注册账号 网盘链接 xff08 6 8 xff09 xff1a 链
  • 关于汇编指令sar右移32位的情况,记录一下

    网上 对sar指令右移超过31位的情况 比如右移32位 右移33位 很少有详细的说明 为了防止下一次还有像我这样傻x的人不会 我就记录一下 我不会过多说基础 基础了解就行 xff0c 能懒就懒 1字节 sar 我们以一字节为例子 00412
  • vs2022 汇编环境配置,xxx.inc头文件找不到,出现报错,不影响正常代码生成的解决方案

    解决方案前提 1 你的include和lib路径已经配置好了 然后代码可以正常的生成一个exe 2 安装了的AsmDube 其实inc文件找不到 是AsmDub找不到 不是vs2022找不到 所以你就去AsmDube修改一下 所以你只需要告
  • 关于8皇后解决方法的浅析

    关于8皇后解决方法的浅析 众所周知 xff0c 解决8皇后最普遍的方法是回溯法 那具体是怎么样的呢 xff1f 大概思路 xff1a 定义一个int型数组queen xff0c 角标 1 2 7 代表皇后所在的行 xff0c 值代表皇后所在