递归——N皇后

用递归替代多重循环

什么是N皇后:

在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n皇后问题等价于在n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。

#include <iostream>
#include <cmath>
using namespace std;
int N;
int queenPos[100];//记录每一横行中,皇后所放的列位置
void NQueen(int k);
 
int main( )
{
	cin >> N;
	NQueen(0);//从数组起始位置开始,进行递归求解
}
 
void NQueen(int k)
{
	if (k == N)
	{
		for (int i = 0; i < N; i++)
			cout << queenPos[i] + 1 << " ";
		cout << endl;
	}
	else
	{
		for (int i = 0; i < N; i++)//当前行遍历所有列的皇后位置是否可行,i+1位列位置
		{
			int j;
			for (j = 0; j < k; j++)//与已排列好的皇后的位置进行对比,k为已排列好的数
			{
				if (queenPos[j] == i || abs(queenPos[j] - i) == abs(k - j))
					break;//如果当前皇后所放置的位置与已知皇后的位置发生冲突,则跳出循环
			}
			if (j == k)
			{
				queenPos[k] = i;
				NQueen(k + 1);//正向递归求解k+1
			}
		}
	}
}

相关推荐

  1. ——N皇后

    2024-03-26 01:40:06       39 阅读
  2. N/八皇后问题(

    2024-03-26 01:40:06       60 阅读
  3. N 皇后问题的解决方案 - 使用和回溯算法

    2024-03-26 01:40:06       46 阅读
  4. 实现 n^k

    2024-03-26 01:40:06       55 阅读
  5. M个苹果放入N个盘子(

    2024-03-26 01:40:06       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 01:40:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 01:40:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 01:40:06       87 阅读
  4. Python语言-面向对象

    2024-03-26 01:40:06       96 阅读

热门阅读

  1. Python中图片的切块与合并

    2024-03-26 01:40:06       36 阅读
  2. 深度学习中一些常见的问题

    2024-03-26 01:40:06       34 阅读
  3. 【C++】学习记录--condition_variable 的使用

    2024-03-26 01:40:06       40 阅读
  4. Docker部署springboot项目

    2024-03-26 01:40:06       40 阅读
  5. sql jdbc测试

    2024-03-26 01:40:06       33 阅读
  6. Android adb命令发送广播介绍

    2024-03-26 01:40:06       33 阅读
  7. C++初阶:浅识内存管理

    2024-03-26 01:40:06       42 阅读
  8. leetcode2549--统计桌面上的不同数字

    2024-03-26 01:40:06       37 阅读
  9. vue 中 清除form 校验状态

    2024-03-26 01:40:06       39 阅读
  10. C#使用ASP.NET Core Razor Pages构建网站(三)

    2024-03-26 01:40:06       44 阅读
  11. leetcode35-Search Insert Position

    2024-03-26 01:40:06       37 阅读