首页 > 其他分享 >NOJ 8皇后问题 (n皇后问题)

NOJ 8皇后问题 (n皇后问题)

时间:2023-10-11 22:58:09浏览次数:32  
标签:输出 NOJ int void .... 问题 ++ 皇后

描述:

输出8皇后问题所有结果。

输入:

没有输入。

输出:

每个结果第一行是No n:的形式,n表示输出的是第几个结果;下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格。不同的结果中,先输出第一个皇后位置靠前的结果;第一个皇后位置相同,先输出第二个皇后位置靠前的结果;依次类推。

输出样例:

输出的前几行:
No 1:
A.......
....A...
.......A
.....A..
..A.....
......A.
.A......
...A....
No 2:
A.......
.....A..
.......A
..A.....
......A.
...A....
.A......
....A...

题解:

#include <iostream>
#include <cstring>
using namespace std;

const int N = 8;
char a[N][N];
int b[N][N];
int num = 0;
void init();
void dfs(int t);
void prog(int x, int y, int z);
void output();

int main()
{
	init();
	dfs(0);
}

void init()
{
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < N; j++)
		{
			a[i][j] = '.';
		}
	}
	memset(b, 0, sizeof(b));
}

void dfs(int t)
{
	if (t == N)
	{
		output();
		return;
	}
	for (int i = 0; i < N; i++)
	{
		if (b[t][i] == 0)
		{
			a[t][i] = 'A';
			prog(t, i, 1);
			dfs(t+1);
			a[t][i] = '.';
			prog(t, i, -1);
		}
	}
}

void prog(int x, int y, int z)
{
	for (int i = 0; i < N; i++)
	{
		b[x][i] += z;
		b[i][y] += z;
		if (x+i < N && y+i < N)
		{
			b[x+i][y+i] += z;
		}
		if (x-i >= 0 && y+i < N)
		{
			b[x-i][y+i] += z;
		}
	}
	for (int j = 1; j < N; j++)
	{
		if (x-j >= 0 && y-j >= 0)
		{
			b[x-j][y-j] += z;
		}
		if (x+j < N && y-j >= 0)
		{
			b[x+j][y-j] += z;
		}
	}
}

void output()
{
	num++;
	cout << "No " << num << ":" << endl;
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < N; j++)
		{
			cout << a[i][j];
		}
		cout << endl;
	}
}

标签:输出,NOJ,int,void,....,问题,++,皇后
From: https://www.cnblogs.com/hello33mao/p/17758427.html

相关文章

  • java.lang.ClassNotFoundException org.apache.ibatis.io.Resources问题的解决
    问题描述时隔好久,再次使用mybatis框架写管理系统,运行时出现了这个问题;问题解决我看着我也导入了相关的依赖,然后就发现,原来是没有放入到libaray里面,只需要这么做就能搞定啦:打开项目里面的这里:将右边的需要的包双击即可加入进去啦!再次运行就不会报错啦~~......
  • 关于 Spartacus CMS 请求响应是否应该被 Transfer State 机制 cover 的问题
    Spartacus默认设置是CMS请求会在CSR和SSR两种环境下都执行,动机是应对在页面渲染过程中,Back-Office有变化发生的情况。如果确实只希望CMS只在SSR端执行,将routing.loadStrategy改成ONCE即可。这个Stackoverflow帖子做了详细说明。打开上面的cms-store.module......
  • FileZilla 超时连接失败问题解决办法
    1.确保ubuntu支持FTP   就是安装ssh。      首先查看你有没有:sudops-e|grepssh红色箭头存在就代表你有的!如果没有那就去安装吧!2.确保ubuntu和windouws都关闭防火墙!【1】ubuntu打开终端输入:sudoufwdisable就会出现【2】windows中在搜索框中搜索防火墙:关闭......
  • Ubuntu无法联网问题解决
    前言会有不同种原因导致系统无法联网,我遇到的可能只是其中一种,建议多问问ChatGPT,每一步遇到的问题问问人家应该能解决我遇到的情况是,之前一直能联网,然后一段时间不登就连不上网,然后又好了,然后又连不上网因此也把我这种情况的解决方案记录一下,以备不时之需   解决步骤......
  • 面试常见问题
    1、你在这段工作中最骄傲的事情是什么2、你在那段工作中的低谷是什么3、当时合作的同事是谁?和他一起工作是什么样的感觉?你的老板认为你的最大强项是什么?又有什么不足?4、做好这份工作你觉得最核心的能力是什么?5、你为何终止那份工作?......
  • vue项目打包,解决静态资源无法加载和路由加载无效(404)问题
    打包后的项目静态资源无法使用,导致页面空白静态资源无法使用,那就说明项目打包后,图片和其他静态资源文件相对路径不对,此时找到config里面的index.js,在build模块下加入assetsPublicPath:'./', 如下图所示,    在History模式下配合使用nginx运行打包后的项目当刷新当前路......
  • Visual Studio C++ 项目调试启动无法正常调试的问题
    启动项目后,设置的断点不起作用原因是需要在项目设置里面启用下面的选项......
  • 问题记录:Unity部分Sprite跳跃移动
    问题展示这个图片中,可以发现巴郡两个字的移动和其他图片不一致。表面原因是因为这个两个图片资产的filtermode为point导致的,其他图片资产为bilinear。解决方案未知。......
  • 《算法学习专栏》—— DP问题之背包模型
    2023年10月11日更新于2023年10月11日一、前言本栏,为背包模型,题目主要来源日常,目前主要来源于Acwing的提高课。希望以后做到背包的题目,也能加进来,不断完善。使用的分析方法均为闫式DP分析法。字臭。。。希望能用手写板慢慢写的好看。二、背包模型2.1目前的模型01背包模型......
  • linux 安装python django pip 遇到的问题
    Python解决SSL不可用问题解决方案:首先要明白python版本需要和openssl的版本需要相对匹配的,在Python3.7之后的版本,依赖的openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl,linux自带的openssl版本过低。1、查看liunx系统的openssl版本信息:opensslversion......