给定一个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皇后问题的更多相关文章

  1. 蓝桥杯训练 2n皇后

    问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一 ...

  2. 蓝桥杯—BASIC-27 2n皇后问题(DFS)

    问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后, 使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行. 同一列或 ...

  3. 蓝桥杯之 2n皇后问题(双层dfs,暴力)

    Description 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后 和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两 个白皇后都不在同 ...

  4. 蓝桥杯 基础训练 2n皇后

    数月前做的2N皇后基本看书敲代码的,然后发现当时的代码不对,正好做到算法提高的8皇后·改,顺便把以前的代码顺带改了下,题目如下: 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋 ...

  5. [蓝桥杯][基础训练]2n皇后问题

    Description 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行 ...

  6. C语言官网蓝桥杯训练1115DNA

    这道题是比较简单的输出字符图形的题,但是有几个坑还是要注意下. 1.题中所述的X是大写的,不要看成小写了.(我就错了好几次) 2.每一行输出最后的X后不能在输出空格. 3.输出两个DNA中间有一个空行 ...

  7. 蓝桥杯如何训练?(附VIP题库)

    https://www.dotcpp.com/ 给大家介绍下蓝桥杯,是近几年可以说国内名气最大的程序设计类比赛了 相比国际赛事ACM,蓝桥杯入门简单.中文答题.拿奖率高,更适合国内大众化参加,近几年不 ...

  8. [18/12/3]蓝桥杯 练习系统 入门级别 Fibonacci数列求模问题 题解思路

    前言略. 看到这个题目本来应该很高兴的,因为什么,因为太TM的基础了啊! 可是当你用常规方法尝试提交OJ时你会发现..hhh...运行超时..(开心地摇起了呆毛 //Fibonacci数列递归一般问题 ...

  9. Java实现 蓝桥杯VIP 基础练习 2n皇后问题

    基础练习 2n皇后问题 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一 ...

随机推荐

  1. redis远程登录

    #redis-cli -h 202.96.126.37 -p 6379 #auth 'd6d72fa9b2ff458e:GRjZmQ3MTN'

  2. jQuery源代码 框架分析

    每个框架都有一个核心.全部的结构都是基于这个核心之上,结构建立好了之后,剩下的就是功能的堆砌. jQuery的核心就是从HTML文档中匹配元素并对其操作. 就跟一座大楼一样.让我们一步一步了解这座大厦 ...

  3. 底部TabsFooter

    Demo简单描述:点击底部菜单可切换页面,并且底部为共用. 这个是在设置好导航Navigator之后进行的步骤,只是我个人进行Tab切换的一种思路方法,或许不是最好的,仅供参考一下. 首先我们需要一个 ...

  4. C#中判断某个值是否存在于枚举

    我有一个枚举类型: #region -酒的种类- public enum WineType { 白酒 = 3, 葡萄酒 = 4, 洋酒 = 5, 老年陈酒 = 16, 啤酒 = 17 } #endre ...

  5. 1-3:CSS3课程入门之伪类和伪元素

    E:target 表示当前的URL片段的元素类型,这个元素必须是E E:disabled 表示不可点击的表单控件 E:enabled 表示可点击的表单控件 E:checked 表示已选中的checkb ...

  6. 【转】php和java之间rsa加密互通

    以下是php封装好的类,引入即可使用 <?php /** * 作者:pjp * 邮箱:vippjp@163.com */ class RSA{ private $privateKey='';// ...

  7. Android 红色小圆球提示气泡 BadgeView

    今天给大家分享两个实用有简单的一个小圆球提示气泡: BadgeView 参考地址: https://github.com/qstumn/BadgeView;       个人地址:http://git ...

  8. EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:通过接口获取实时信息

    对于动态网站,要实时更新网站的信息,通过接口来获取实时信息是一个必不可少的部分.EasyNVR可以接入IPC等前端设备,必须要实时获取到对应的IPC实时信息进行展示. 本篇主要说明Ajax来获取数据. ...

  9. Vue 填坑系列(持续更新...)

    1.遇到页面显示不更新,数据已更新情况 vue-cli中: this.$nextTick(function () { this.x=x; })     以js引入vue的网页中: this.$set( ...

  10. 安装配置Django

    安装配置Django 以下是基于python3.5 pip install Django 把python环境目录Scripts配置到环境变量,主要在命令行中随时可以使用django-admin 验证 ...