[USACO1.5]八皇后 Checker Challenge

给定一个 N×N 的棋盘,请你在上面放置 N 个棋子,要求满足:

每行每列都恰好有一个棋子
每条对角线上都最多只能有一个棋子
在这里插入图片描述

上图给出了当 N=6 时的一种解决方案,该方案可用序列 2 4 6 1 3 5 来描述,该序列按顺序给出了从第一行到第六行,每一行摆放的棋子所在的列的位置。

请你编写一个程序,给定一个 N×N 的棋盘以及 N 个棋子,请你找出所有满足上述条件的棋子放置方案。

输入格式
共一行,一个整数 N。

输出格式
共四行,前三行每行输出一个整数序列,用来描述一种可行放置方案,序列中的第 i 个数表示第 i 行的棋子应该摆放的列的位置。

这三行描述的方案应该是整数序列字典序排在第一、第二、第三的方案。

第四行输出一个整数,表示可行放置方案的总数。

数据范围
6≤N≤13
输入样例:
6
输出样例:
2 4 6 1 3 5
3 6 2 5 1 4
4 1 5 2 6 3
4

在这里插入图片描述
在这里插入图片描述
这条对角线x-y+n,y-x+n都可以,但是数组的大小要发现变化,在这道题,如果你用x-y+n,N = 30,但如果你要y-x+n,N可以 = 20,所以数组开大一点。

代码如下:

#include <iostream>
using namespace std;
const int N = 30;
int path[N];
bool col[N],duijiao1[N],duijiao2[N];
int ans;
int n;
void dfs(int x)//行
{if (x > n){ans++;if (ans<=3){for (int i = 1;i<=n;i++){cout<<path[i]<<" ";}cout<<endl;return ;}}for (int y = 1;y<=n;y++){if (!col[y] && !duijiao1[x+y] && !duijiao2[x-y+n]){col[y] = duijiao1[x+y] = duijiao2[x-y+n] = true;path[x] = y;dfs(x+1);col[y] = duijiao1[x+y] = duijiao2[x-y+n] = false;// path[x] = 0;}}
}int main()
{cin>>n;dfs(1);cout<<ans<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python窗口显示表格_pyqt 调用tablewidget窗口时无法显示窗口内容

请教一下大家&#xff0c;想实现在主窗口中点击按钮调用一个新窗口&#xff0c;这个窗口是tablewidget&#xff0c;目前可以实现弹出窗口&#xff0c;但是无法显示表格&#xff0c;只有一个空白窗口。实在找不到原因了&#xff0c;还请大家指点。 这是主窗口代码 # -*- coding:…

程序员过关斩将--redis做消息队列,香吗?

菜菜哥&#xff0c;我刚做完了一个订单系统&#xff0c;感觉很简单呀说说看&#xff0c;大量的订单状态怎么处理的&#xff1f;我设计的时候可是考虑了这一点&#xff0c;所以用了异步处理&#xff0c;采用了MQ那用的什么MQ呢&#xff0c;透露一下呗我用的redis做的MQ&#xff…

word List25

word List25 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

c++ 多核cpu序列号_关于 CPU 的一些基本知识总结

优质文章&#xff0c;及时送达作者 | 骏马金龙链接 | cnblogs.com/f-ck-need-u/p/11141636.htm关于CPU和程序的执行CPU是计算机的大脑。1、程序的运行过程&#xff0c;实际上是程序涉及到的、未涉及到的一大堆的指令的执行过程。当程序要执行的部分被装载到内存后&#xff0c;C…

.NET Core开发实战(第4课:Startup:掌握ASP.NET Core的启动过程)--学习笔记

04 | Startup&#xff1a;掌握ASP.NET Core的启动过程新建一个 ASP.NET Core Web 应用程序选择 APIpublic class Program {public static void Main(string[] args){CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args) >…

C语言---二进制和文本文件的备份

C语言—二进制和文本文件的备份 学习参考&#xff1a; https://www.cnblogs.com/jackytang/p/9011127.html 代码&#xff1a; #include <stdio.h> #include <stdlib.h> int copyFile(char *fileRead, char *fileWrite); int main() {char fileRead[100]; // 要…

聊聊统一身份认证服务

源宝导读&#xff1a;当企业的应用系统逐渐增多后&#xff0c;每个系统单独管理各自的用户数据容易行成信息孤岛&#xff0c;分散的用户管理模式阻碍了企业应用向平台化演进。本文将介绍构建统一身份认证的技术方案和思路。一、背景当企业的应用系统逐渐增多后&#xff0c;每个…

Word List 26

Word List 26 如果存在什么问题&#xff0c;欢迎批评指正!谢谢&#xff01;

[蓝桥杯2015决赛]五星填数-枚举+数论

解题思路&#xff1a; 对于一种符合题意的情况&#xff0c;旋转和对称之后结果也是一样&#xff0c;所以我们要除去旋转(/5)和对称(/2)的情况&#xff0c;所以结果要除以10 代码如下&#xff1a; #include <iostream> #include <algorithm> using namespace std;…

word List27

word List27 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

如何看待程序媛们的职场焦虑和未来职业规划?

本文公众号平台首发于【DotNET技术圈】&#xff0c;来自邹溪源一 引子昨天&#xff0c;有一位通过我们长沙.NET技术社区公众号【DotNET技术圈】加我的好友的姑娘问了一个关于职业规划的问题&#xff1a;“在你的身边有没有认识的女程序员&#xff0c;可以告诉一下我们她们的职业…

[蓝桥杯2016初赛]搭积木-枚举,next_permutation

代码如下&#xff1a; #include <iostream> #include <algorithm> using namespace std;int a[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};bool check() {if (a[0] > a[1] && a[0] > a[2] &&a[1] > a[3] && a[1] > a[4] &&a…

word List28

word List28 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

target not created怎么解决_怎么才能最短时、高效、踏实地学习 Python(附链接)...

作者&#xff1a;九章算法来源&#xff1a;数据Seminar本文约2400字&#xff0c;建议阅读5分钟本文教你高效学习全球主流编程语言Python。标签&#xff1a;PythonPython是当前全球的主流编程语言之一&#xff0c;基于其简洁的语法结构&#xff0c;可以让开发者用更少的代码完成…

【5min+】 巨大的争议?C# 8 中的接口

介绍【五分钟的dotnet】是一个利用您的碎片化时间来学习和丰富.net知识的博文系列。它所包含了.net体系中可能会涉及到的方方面面&#xff0c;比如C#的小细节&#xff0c;AspnetCore&#xff0c;微服务中的.net知识等等。5min不是超过5分钟的意思&#xff0c;""是知识…

[蓝桥杯2016初赛]寒假作业-next_permutation枚举

暴搜代码&#xff08;耗时较长&#xff0c;要90s左右&#xff09;如下&#xff1a; #include <iostream> using namespace std; const int N 15; int a[N]; bool st[N]; int cnt;void dfs(int u) {if (u 13) {if (a[1] a[2] a[3] && a[4] - a[5] a[6] &…

word List29

word List29 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

.NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(上)

05 | 依赖注入&#xff1a;良好架构的起点为什么要使用依赖注入框架借助依赖注入框架&#xff0c;我们可以轻松管理类之间的依赖&#xff0c;帮助我们在构建应用时遵循设计原则&#xff0c;确保代码的可维护性和可扩展性ASP.NET Core 的整个架构中&#xff0c;依赖注入框架提供…

非常实用的word文本括号匹配是否正确的code,可按照此思路扩展到python处理大批量文本文件的检错中,非常实用!!!

非常实用的word文本括号匹配是否正确的code&#xff0c;可按照此思路扩展到python处理大批量文本文件的检错中&#xff0c;非常实用&#xff01;&#xff01;&#xff01; 原理&#xff1a; 栈 代码&#xff1a; #include <stdio.h> #include <stdlib.h> #includ…

分区式存储管理c++_分区机要变形缝,纵横交接卫浴厨:防火阀参数的高效记忆口诀...

防火阀也是常考点&#xff0c;特别是设置部位、温度&#xff0c;是最容易考的地方。记起来有点麻烦&#xff0c;从中提取精炼一下&#xff0c;可以用如下6句话&#xff0c;就能记住。防火阀与排烟防火阀重点参数记忆要领&#xff1a;分区机要变形缝&#xff0c;纵横交接卫浴厨独…