蓝桥杯训练 2n皇后问题
给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。
输入格式:
输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。
输出格式:
输出一个整数,表示总共有多少种放法。
输入样例1:
4
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
输出样例1:
2
输入样例2:
4
1 0 1 1
1 1 1 1
1 1 1 1
1 1 1 1
输出样例2:
0
递归回溯。
代码:
#include <stdio.h>
#include <stdlib.h>
int mp[][],lay[],n;
int ans[][],ant;
int temp[],num;
int check(int k,int v) {
for(int i = ;i < k;i ++) {
if(temp[i] == v)return ;
if(abs(temp[i] - v) == k - i)return ;
}
return ;
}
int dif(int a,int b) {
for(int i = ;i < n;i ++) {
if(ans[a][i] == ans[b][i])return ;
}
return ;
}
void que(int k){
if(k == n) {
for(int i = ;i < n;i ++) {
ans[ant][i] = temp[i];
}
ant ++;
return;
}
for(int i = ;i < n;i ++) {
if(mp[k][i] && check(k,i)) {
temp[k] = i;
mp[k][i] = ;
que(k + );
mp[k][i] = ;
}
}
}
int main() {
scanf("%d",&n);
for(int i = ;i < n;i ++) {
for(int j = ;j < n;j ++) {
scanf("%d",&mp[i][j]);
}
}
que();
for(int i = ;i < ant;i ++) {
for(int j = ;j < i;j ++) {
if(dif(i,j))num ++;
}
}
printf("%d",num * );
}
蓝桥杯训练 2n皇后问题的更多相关文章
- 蓝桥杯训练 2n皇后
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一 ...
- 蓝桥杯—BASIC-27 2n皇后问题(DFS)
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后, 使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行. 同一列或 ...
- 蓝桥杯之 2n皇后问题(双层dfs,暴力)
Description 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后 和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两 个白皇后都不在同 ...
- 蓝桥杯 基础训练 2n皇后
数月前做的2N皇后基本看书敲代码的,然后发现当时的代码不对,正好做到算法提高的8皇后·改,顺便把以前的代码顺带改了下,题目如下: 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋 ...
- [蓝桥杯][基础训练]2n皇后问题
Description 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行 ...
- C语言官网蓝桥杯训练1115DNA
这道题是比较简单的输出字符图形的题,但是有几个坑还是要注意下. 1.题中所述的X是大写的,不要看成小写了.(我就错了好几次) 2.每一行输出最后的X后不能在输出空格. 3.输出两个DNA中间有一个空行 ...
- 蓝桥杯如何训练?(附VIP题库)
https://www.dotcpp.com/ 给大家介绍下蓝桥杯,是近几年可以说国内名气最大的程序设计类比赛了 相比国际赛事ACM,蓝桥杯入门简单.中文答题.拿奖率高,更适合国内大众化参加,近几年不 ...
- [18/12/3]蓝桥杯 练习系统 入门级别 Fibonacci数列求模问题 题解思路
前言略. 看到这个题目本来应该很高兴的,因为什么,因为太TM的基础了啊! 可是当你用常规方法尝试提交OJ时你会发现..hhh...运行超时..(开心地摇起了呆毛 //Fibonacci数列递归一般问题 ...
- Java实现 蓝桥杯VIP 基础练习 2n皇后问题
基础练习 2n皇后问题 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一 ...
随机推荐
- oracle 表压缩技术
压缩表是我们维护管理中常常会用到的.以下我们看都oracle给我们提供了哪些压缩方式. 文章摘自"Oracle® Database Administrator's Guide11g Rele ...
- nodejs 简单的备份github代码初版
传送门:http://www.jianshu.com/p/002efed0d3af 我的代码: const https = require('https'); const fs = require(& ...
- MySQL-[Err] 1055 - Expression #1
© 版权声明:本文为博主原创文章,转载请注明出处 问题描述:在MySQL数据库下,执行SQL插入语句报错.错误信息如下: 错误原因:在MySQL5.7之后,sql_mode中默认存在ONLY_FULL ...
- centOS 7中上网以及网卡的一些设置
在VMWare中安装LinuxOS是个非经常见的事情. 可是,关于虚拟机的上网问题.想在这里总结一下,里面还有不懂的问题.希望能够得到前辈的解惑. 一.VMWare网卡的设置的三种选项: Bridge ...
- Android之Intent和Activity
Intent能够说是Android的灵魂,程序跳转和传递数据的时候基本上就是靠Intent了.Intent在Android应用中是相当重要的,理解Intent相应用编程非常有帮助.在Android的官 ...
- 一起学android之怎样设置TextView中不同字段的字体颜色(22)
在这里先看看效果图: OK,有时候,在我们的项目中会要求TextView中文本有一部分的字体颜色不一样.这时我们应该使用 SpannableStringBuilder这个工具类,当然这个类的功能非常强 ...
- 【BZOJ】1003 Cards
[解析]Burnside引理+背包dp+乘法逆元 [Analysis] 这道题卡了好久,就是没想懂置换跟着色是不一样的. 依据burnside引理.在一个置换群作用下不等价类的个数为每一个置换作用下不 ...
- CentOS6.5安装MySQL5.6 过程记录
刚开始,还不太懂,直接上了MySQL5.7版本的二进制安装,结果遇到了各种问题,从5.6到5.7还是做了很大改变的,比如mysql_install_db的文件位置变更到了/bin文件下等等,觉得现在用 ...
- 【BZOJ4052】[Cerc2013]Magical GCD 乱搞
[BZOJ4052][Cerc2013]Magical GCD Description 给出一个长度在 100 000 以内的正整数序列,大小不超过 10^12. 求一个连续子序列,使得在所有的连续 ...
- Swift 学习笔记 (继承)
一个类可以从另一个类继承方法.属性和其他的特性.当一个类从另一个类继承的时候,继承的类就是所谓的子类,而这个类继承的类被称为父类. 在 Swift 中类可以调用和访问属于它们父类的方法.属性和下标脚本 ...