当前位置: 首页 > news >正文

蓝桥杯备考:八皇后问题

八皇后的意思是,每行只能有一个,每个对角线只能有一个,每一列只能有一个,我们可以dfs遍历每种情况,每行填一个,通过对角线和列的限制来进行剪枝

话不多说,我们来实现一下代码

#include <iostream>
#include <vector>
using namespace std;
const int N = 50;
int n;
int ret;
vector<int> path;
bool col[N],st1[N*2],st2[N*2];

void dfs(int pos)
{
	if(pos>n)
	{
		if(ret>=3);
		else{
			for(auto&e : path)
			{
				cout << e << " ";
			}
			cout << endl;
		}
		ret++;
		return;
		
	}
	for(int j = 1;j<=n;j++)
	{
		if(col[j]||st1[pos-j+n]||st2[pos+j])continue;
		col[j]=st1[pos-j+n]=st2[pos+j] = true;
		path.push_back(j);
		dfs(pos+1);
		col[j]=st1[pos-j+n]=st2[pos+j] = false;
		path.pop_back();
	}
}
int main()
{
	cin >> n;
	dfs(1);
	cout << ret << endl;
	
	
	
	
	return 0;
}

相关文章:

  • QT——信号和槽
  • 渗透测试过-关于学习Token、JWT、Cookie等验证授权方式的总结
  • 动态 SQL 或 Criteria 构造 OR 条件,可以实现多字段匹配
  • 物理安全——问答
  • AI大模型使用记录
  • 第五周日志-伪协议(3)
  • 模块化革命:树莓派CM5嵌入式工业计算机如何重构嵌入式系统开发边界
  • 第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(部分题解)
  • Qemu-STM32(十二):STM32F103 框架代码添加
  • STM32F103_LL库+寄存器学习笔记08 - DMA串口发送,开启DMA传输完成中断
  • ip改变导致的数据库连接不上
  • Java中用Stream流取出分组后每组最大值对象的ID
  • 前端 登录页面 案例
  • HarmonyOS NEXT开发实战——组件状态管理
  • 蓝桥杯嵌入式赛道复习笔记8(eeprom读写)
  • 蓝桥杯备考:DFS之数独
  • 渗透测试中发现ak/sk泄露时的验证工具
  • 【Zookeeper搭建(跟练版)】Zookeeper分布式集群搭建
  • 【redis】集群 如何搭建集群详解
  • 用数组遍历出来的页面,随节点创建的ref存储在数据仓库中,如果数据删除,页面相关节点也会删除,数据仓库中随节点创建的ref会不会也同时删除
  • 做一个旅游团网站怎么做/图片识别 在线百度识图
  • 辽阳网站建设多少钱/微信朋友圈广告推广
  • 网站空间200m/seo关键词优化软件手机
  • 山东城市建设厅网站/企业网站seo案例
  • 衡水网站网站建设/百度点击软件还有用吗
  • 专业网站建设定制/seo 论坛