Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >八皇后递归实现

八皇后递归实现

作者头像
glm233
发布于 2020-09-28 02:52:24
发布于 2020-09-28 02:52:24
29500
代码可运行
举报
运行总次数:0
代码可运行

八皇后问题,是指在8X8d的棋盘上放置八个皇后,使得她们不能互相攻击,皇后的攻击范围是同行同列,或是在一条对角线上,满足上列条件的摆法一共有多少种?

我的做法复杂度上限(8^8)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<cmath>
using namespace std;
 
const int N = 100;
int x[N] = {-1};
  
bool Success(int k){
	for(int i=0;i<k;i++){
		if(x[i]==x[k] || abs(k-i) == abs(x[i]-x[k])) 
			return false; 
	}
	return true; 
} 
void Print(int n){
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(j==x[i]){  
				cout<<"Q  ";
			}
			else{
				cout<<"0  ";
			}
		}
		cout<<endl;
	}
	cout<<endl; 
} 
void Queue(int n){
	int k=0, num=0;
	while(k>=0)
	{ 
		x[k]++;  
		while(x[k]<n and !Success(k)){
			x[k]++; 
		} 
		if(x[k]<n and k==n-1){
			cout<<"第"<<++num<<"个解是:"<<endl;
			Print(n);
		} 
		else if(x[k]<n and k<n-1){
			k++; 
		}else if(x[k]>n-1){

			x[k--] = -1;  
		}
	} 
}
 
 
 
int main()
{
	Queue(8);
	while(1)getchar(); 
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/11/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
搜索(3)
例2 八皇后问题  八皇后问题用一句话来描述,就是:找到所有在8*8的国际象棋棋盘上放置8枚皇后棋子并且满足任意两枚皇后不会互相攻击的方案  我们先来看一下国际象棋的棋盘:  棋盘是由8×
mathor
2018/07/04
5470
杂谈:经典算法之八皇后问题
八皇后问题也算是算法问题中一道经典的不能够更加经典的题目了,这里,这里,我们来考察一下八皇后问题的一般形式,即N皇后问题。
codename_cys
2021/03/27
4010
八皇后问题轻松解决
八皇后问题: 要在8*8的国际象棋棋盘中放8个皇后,使任意两个皇后都不能互相吃掉。规则是皇后能吃掉同一行、同一列、同一对角线的棋子。如下图: 问题分析: 假设有皇后Q1(x1,y1)和Q2(x2,y2) 不在同一行:x1!=x2 不在同一列:y1!=y2 不在同一左对角线上:x1+ y1 != x2 +y2 不在同一右对角线上:x1-y1 !=x2-y2 问题编程化: 我们用一个一维数组a来表示每个皇后的位置,a[2]=4表示皇后的位置位于a(2,4),即二行四列上 某一行的皇后a[n]不能和之前行
大忽悠爱学习
2021/11/15
7080
八皇后问题
八皇后问题就是在8×8的国际象棋棋盘上放置8个皇后,保证任意2个皇后都无法互相攻击的问题。
灯珑LoGin
2022/10/31
3720
回溯递归算法—-八皇后问题
前,有皇帝。就拿八皇后。由此产生的一系列问题,凌乱。由此产生的八皇后问题。哈哈
全栈程序员站长
2022/07/05
3220
八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例:在8X8格的国际象棋棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
用户2909867
2018/08/22
3090
八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
恋喵大鲤鱼
2018/08/03
5130
【剑指offer】八皇后问题
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26614999
bear_fish
2018/09/20
4010
【剑指offer】八皇后问题
汉诺塔和N皇后问题
汉诺塔和N皇后问题算是计算机中经典的递归算法问题了。几乎讲到递归的时候都会想到这两个问题,那么我们就来看一下这两个经典的递归问题:
指点
2019/01/18
6690
汉诺塔和N皇后问题
回溯算法解八皇后问题(java版)
    八皇后问题是学习回溯算法时不得不提的一个问题,用回溯算法解决该问题逻辑比较简单。
天涯泪小武
2019/01/17
2.3K0
前端开发常用算法之一:八皇后算法的使用
诞生:八皇后问题(Eight queens),是由国际象棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。
三掌柜
2024/06/23
1510
前端开发常用算法之一:八皇后算法的使用
八皇后问题递归算法思想_迷宫在数据结构中的地位
一个7*8的数组模拟迷宫,障碍用1表示,通路使用0表示,给定起点(1,1)和终点(6,5),要求给出起点到终点的通路
全栈程序员站长
2022/09/23
5620
八皇后问题递归算法思想_迷宫在数据结构中的地位
递归之八皇后
  对于接触过编程的朋友来说,最开始了解的算法莫过于贪心或者递归;而提到递归,除了本博文前面介绍的汉诺塔问题以外,还有一个比较有趣的问题——八皇后问题。现在就跟大家理一理,分享一下代码的实现思路。
云海谷天
2022/08/09
1920
递归之八皇后
【C++】八皇后问题(竖列递进)
八皇后问题是一个古老的问题,于1848年由一位国际象棋棋手提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,如何求解?
看、未来
2020/08/25
6950
全排列的应用:正方体的组成与八皇后
给定一个含有8个数字的数组,判断有没有可能把这8个数字分别放到正方体的8个顶点上,使得正方体上三组相对面上的4个顶点的和都相等。
神奇的程序员
2023/08/23
2390
全排列的应用:正方体的组成与八皇后
八皇后问题-Java
八皇后问题(英文:Eight queens),是由国际象棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。
utopia
2023/03/31
4220
Day17-递归&回溯-N皇后
国际象棋8x8的棋盘,皇后棋子的该行,该列,两条对角线上,均不能再放置皇后棋子。那么放置8个皇后,最多有多少种摆法?
BUPTrenyi
2019/07/15
4460
Day17-递归&回溯-N皇后
C++浅谈八皇后问题中数据结构对算法的影响
编写回溯算法文章时,文章里用到了八皇后案例。文章的初衷是为了讲好回溯算法,体现算法的核心逻辑,没有在案例的子逻辑上费太多心思。导致阅读过文章的粉丝留言说,检查皇后位置是否合法的代码略显冗余。回头再审查时,也觉得言之有理。
一枚大果壳
2024/04/25
1270
C++浅谈八皇后问题中数据结构对算法的影响
八皇后
八皇后问题,是一个古老而著名的问题,是回溯算法的经典案例。该问题是国际西洋棋,棋手马克思·贝瑟尔1848念提出:在8*8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后不能处于同一行、同一列或同一斜线上,不能互相攻击;问有多少种摆法。现在的解答是92种。
JusterZhu
2022/12/07
4680
八皇后
C++简单实现八皇后问题
近来无聊,想着几年前用c#实现的八皇后,是参考网上的答案,如今过了几年,想试试有没进步,用c++简单地实现。 八皇后问题,是回溯算法的经典例子,它的规则要求是同一行同一列同一条斜线不能有两个皇后,不然会相互攻击。这条件听上去不难吧,可运算量却是惊人的多啊。 首先,程序是算法加数据结构,我这程序的数据结构是一个8*8的整型矩阵chessboard,全部初始化为0,这作为棋盘,每一格若为0则代表可以放棋子,另外还有一个长度为8的整型数组path,记录一次成功的排列,path[i]代表第i行棋子的位置。 然后,本
forrestlin
2018/05/23
7280
相关推荐
搜索(3)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验