首页 > 编程语言 >C++回溯算法经典例题:四皇后问题

C++回溯算法经典例题:四皇后问题

时间:2024-08-05 11:56:55浏览次数:18  
标签:int 斜线 C++ 假设 回溯 皇后 卡死 例题 时会

问题简介:

在一个4×4的棋盘上,任意两个皇后都不能处在同一行、同一列 任意两个皇后都不能处在同一斜线上(主斜线、反斜线)。

题目分析:

1.假设第一个皇后在(1,1):

        1)在x=3时会卡死

        

        2)在x=4时会卡死

        

2.假设第一个皇后在(2,1):

        1)顺利通过

        

3.假设第一个皇后在(3,1)

        1)顺利通过

        

4.假设第一个皇后在(4,1)

        1)在x=4时会卡死

        

        2)在x=3时会卡死

        


代码实现:

#include <bits/stdc++.h>
using namespace std;
int c[10],z[20],f[20],ans;
void queen(int k){
	if(k==5){
		ans++;
		return ;
	}
	for(int j=1;j<=4;j++){
		if(c[j]==0&&z[k-j+4]&&f[k+j]==0){
			c[j]=z[k-j+4]=f[k+j]=1;
			queen(k+1);
			c[j]=z[k-j+4]=f[k+j]=0;
		}
	}
}
int main()
{
	queen(1);
	cout<<ans;
	return 0;
}


end

标签:int,斜线,C++,假设,回溯,皇后,卡死,例题,时会
From: https://blog.csdn.net/2301_79367516/article/details/140890247

相关文章

  • C++简单模拟:电梯问题
    问题描述:某城市最高建筑物只有一个电梯,一个请求列表是由 n 个正整数组成的。数字表示电梯将停在哪个楼层。电梯向上移动一层需要 6 秒,向下移动一层需要 4 秒。电梯每次停下会停留 5 秒,对于给定的请求列表,需要计算用于满足列表中所有请求的总时间。电梯开始时在第一层......
  • C++商店管理系统
    代码中使用了C++11的特性后面有些输出(cout输出的)的提示文本是英文,因为懒得敲中文源码在最后面文末投票参与一下谢谢商品数据保存在items.txt用户数据保存在users.txt实现功能1.添加商品(商品ID,商品名,库存数量,价格)填写完信息后询问是否执行2.修改商品(先提示原有信......
  • SpringBoot-书店信息管理系统+93494(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP
    基于springboot书店信息管理系统摘 要书店信息管理系统采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员和用户两部分,管理员管理主要功能包括:首页、轮播图、公告栏、资源管理(图书资讯、资讯分类)交流管理(留言板、留言板分类)系统用户(管理员、顾客用户......
  • 【每日一题】【DFS】【试除法求约数】【大剪枝】清楚姐姐跳格子 牛客周赛 Round 54 D
    牛客周赛Round54D题清楚姐姐跳格子题目背景牛客周赛Round54题目描述样例#1样例输入#1523154样例输出#12做题思路首先知道ai......
  • Halcon C++ 环境配置
    前言:这一段时间因为工作原因在使用Halcon做机器视觉的方案,因此学习了小半年的halcon,在学习过程中使用记事本记录下了学习过程中的一些经验,整理出来分享。目标:在VS2020编译环境下,配置Halcon的环境,使之能够调用Halcon的方法。方法:打开新建的项目,点开该项目的属性。在VC++目录......
  • C++(仿函数)
    目录1.仿函数的定义和使用2.仿函数的优点3.总结仿函数(Functor)是C++中的一种重要概念,它指的是一个重载了operator()的类或结构体。仿函数允许你像使用普通函数一样使用类的实例。它们通常用于需要函数作为参数的算法或需要自定义操作的场景。1.仿函数的定义和使用定义......
  • C++进阶 map和set
    目录关联式容器键值对set的介绍set的使用set的模板参数列表set的构造set的迭代器set的容量set修改操作 multiset的介绍multiset的使用map的介绍map的使用map的模板参数说明map的构造map的迭代器map的容量与元素访问map中元素的修改 multimap的介绍关联......
  • 求助!C++使用Eigen求多项式根报错访问冲突
    本地环境:VS2022安装的NuGet包:Eigen版本3.3.9配置MKL头文件相关代码#include<cmath>#include<math.h>#include<stddef.h>#include<stdlib.h>#include<string.h>voidComputeTest();源文件相关代码#defineEIGEN_USE_MKL_ALL#defineEIGEN_VECTORIZ......
  • 【C++第11章】Vector
    【C++第11章】Vectorvector介绍......
  • C++ 指针注意事项总结
    在C++中,指针是一种强大的工具,允许程序员直接访问和操作内存地址。然而,由于指针直接操作内存,错误的使用可能导致程序崩溃、内存泄漏等严重问题。以下是C++指针相关的详细注意事项:1.指针初始化定义指针时务必初始化:未初始化的指针可能指向任意内存地址,称为“野指针”。野指......