给定一个 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;
}

[USACO1.5]八皇后 Checker Challenge相关推荐

  1. P1219 [USACO1.5]八皇后 Checker Challenge 题解

    background:给朋友讲题,顺便过了这道几年前遗留的题 P1219 [USACO1.5]八皇后 Checker Challenge - 洛谷 | 计算机科学教育新生态 (luogu.com.cn ...

  2. 洛谷P1219 [USACO1.5]八皇后 Checker Challenge(C语言)

    洛谷P1219 [USACO1.5]八皇后 Checker Challenge 题目 代码 这个八皇后问题也是经典入门深搜的题目了呀,理论上深搜都可以运用数据结构的栈来模拟计算机内部的压栈操作.但这里 ...

  3. P1219 [USACO1.5]八皇后 Checker Challenge(二进制)

    昨天看到群里有小萌新在问八皇后,突然想起这玩意还有二进制写法,于是来了一发. vec<vec<int>> res; int n, ans = 0, mask;void back ...

  4. 八皇后 Checker Challenge

    题目 : 八皇后 Checker Challenge 前言 : 深度优先搜索也是一种暴力枚举的算法,但是相较于循环枚举这种固定层数而且不能随意增减层数的枚举形式来说, DFS更具有优势,因为DFS是逐 ...

  5. 八皇后 Checkr Challenge

    ** 八皇后 checkr challenge ** 洛谷原题p1912 https://www.luogu.com.cn/problem/P1219 题目分析 dfs搜索 每行每列对角线上不能有重复 ...

  6. 【回溯法】八皇后问题

    问题描述 在国际象棋棋盘(8×8)(8\times8)(8×8)上放置八个皇后,要求每两个皇后之间不能直接吃掉对方. 皇后可以攻击处于同一行.同一列和同一对角线上的棋子. 思路分析 八皇后问题可以使用 ...

  7. 八皇后问题汇总(C++版)

    八皇后问题汇总(C++版) 八皇后问题 八皇后问题(来源:openjudge) 八皇后(来源:openjudge) [P1219 [USACO1.5]八皇后 Checker Challenge(来源: ...

  8. 【棋盘问题】-八皇后问题

    [USACO1.5]八皇后 Checker Challenge - 洛谷 八皇后问题是由国际象棋棋手马克斯-贝瑟尔于1848年提出的问题,是回溯算法的典型案例,问题表述为在8*8格的国际象棋中摆放8个 ...

  9. usaco Section 1.5 Checker Challenge 最慢0.162秒0.0+n皇后问题位运算版(C语言)

    今天做USACO做到Section 1.5的Checker Challenge 直接dfs之后的结果是,超时.. 百度查查才想起来就是八皇后问题.有人讲怎么利用对称性怎么怎么优化,我没仔细看 直到看到 ...

最新文章

  1. codeblocks断点不停,无效问题终极解决
  2. Java中的Iterable与Iterator详解
  3. centos 下载 哪个版本_生信分析平台搭建(十六):CentOS
  4. jsp session
  5. IT公司组织机构和职位、职位职责
  6. 过滤器 拦截器 controller 页面 的执行顺序
  7. python实现求解给定整数的质因数
  8. TensorFlow实现mnist手写数字识别项目代码
  9. 多套 企业/工厂/超市/仓库库存管理系统源码 工具软件程序源代码
  10. arcos的matlab定义,想用matlab解一个带arccos的方程。可是结果好像没有解析解。求帮助解数值解...
  11. 家庭局域网_组建家庭无线局域网需要哪些硬件设备?
  12. 初学者也能看懂的Ray March体积云
  13. 海豚php 安装,下载及安装
  14. java浮点型数据的比较
  15. 实时的软件生成 —— Prompt 编程打通低代码的最后一公里?
  16. 杰理之上下文件夹播放上文件夹从最后一首播放【篇】
  17. 第九天 杭电OJ 1087、1203、1003
  18. 键盘按下去弹起来很慢_笔记本按键弹不起来了不可怕
  19. win8中vm12安装macosx10.11
  20. js中function和Function的区别

热门文章

  1. CityEngine下如何更好的实现影像与地形叠加
  2. Android之实现首尾带圆角的多颜色水平条
  3. React Native之触摸事件(Touchable系列和onLongPress)
  4. linux之修改dns以及用netmask修改ip和网关
  5. Android之解决远程拍照不打开activity用其它方式获取surfaceView
  6. Android之访问网络,使用HttpURLConnection还是HttpClient?
  7. 《零基础看得懂的C++入门教程 》——(6)自己动手写个函数
  8. deb php7 fileinfo,linux安装php7.2扩展fileinfo
  9. 服务器连接不稳定fifa,fifa服务器链接异常
  10. vue2 怎么用vite_vue3vite简介