2n皇后问题-------递归 暴力求解题与分布讨论题
接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 0 1 1
1 1 1 1
1 1 1 1
1 1 1 1
#include<string>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
int Q[10][10],n,b[10]={0},w[10]={0},ans=0;
void dfs_w(int cnt)
{
if(cnt==n+1) ans++;
for(int i=1;i<=n;i++)
{
int flag=0;
if(Q[cnt][i]==0||b[cnt]==i)//判断是否黑色占用
continue;
w[cnt]=i;
for(int k=1;k<cnt;k++)
if(w[k]==w[cnt]||abs(k-cnt)==abs(w[k]-w[cnt]))
{flag=1;break;}
if(!flag) dfs_w(cnt+1);
}
}
void dfs_b(int cnt)//行数
{
if(cnt==n+1) dfs_w(1);
for(int j=1;j<=n;j++)
{
int flag=0;
if(Q[cnt][j]==0) continue;
b[cnt]=j;
for(int k=1;k<cnt;k++)
if(b[k]==b[cnt]||abs(cnt-k)==abs(b[cnt]-b[k]))
{flag=1;break;}
if(flag==0)
dfs_b(cnt+1);
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>Q[i][j];
dfs_b(1);
cout<<ans<<endl;
return 0;
}
2n皇后问题-------递归 暴力求解题与分布讨论题的更多相关文章
- F - Maximal Intersection --------暴力求解题
You are given n segments on a number line; each endpoint of every segment has integer coordinates. S ...
- 蓝桥--2n皇后问题(递归)--搬运+整理+注释
N皇后问题: #include <iostream> #include <cmath> using namespace std; int N; ];//用来存放算好的皇后位置. ...
- 对八皇后的补充以及自己解决2n皇后问题代码
有了上次的八皇后的基础.这次准备解决2n皇后的问题,: //问题描述// 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行./ ...
- 算法基础_递归_求杨辉三角第m行第n个数字
问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好) ...
- C语言 · 2n皇后问题
基础练习 2n皇后问题 时间限制:1.0s 内存限制:512.0MB 锦囊1 搜索算法. 锦囊2 先搜索n皇后的解,在拼凑成2n皇后的解. 问题描述 给定一个n*n的棋盘,棋盘中 ...
- 计蒜课--2n皇后、n皇后的解法(一般操作hhh)
给定一个 n*nn∗n 的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入 nn 个黑皇后和 nn个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条斜线(包括正负斜线)上,任意的两个白皇后都 ...
- 2n皇后 - 回溯
题目地址:http://www.51cpc.com/web/problem.php?id=1172 Summarize: 1. 递归回溯: 2. 先扫完一种皇后,再扫描另一种: 3. 循环输入: 4. ...
- Java实现 蓝桥杯VIP 基础练习 2n皇后问题
基础练习 2n皇后问题 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一 ...
- 蓝桥杯试题 基础练习 2n皇后问题以及n皇后问题
在学习2n皇后之前,我们应该认识一下n皇后问题: 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于 ...
随机推荐
- 使用IDEA 发布项目搭配远程仓库 Gitee
本次讲解的是idea 发布到gitee上 一样的操作流程 没有基础的请先去学习 附上我的 gitee 地址 有资源会发布到gitee 俗话说关注走一走 活到999 https://gitee.com/ ...
- 新手安装配置git简洁教程
第一步,下载安装git 打开 [git官网] https://git-scm.com/,下载git对应操作系统的版本. 所有东西下载慢的话就可以去找镜像!官网下载太慢,我们可以使用淘宝镜像下载:htt ...
- js语法基础入门(6)
6.函数 6.1.函数是什么? 函数就是具有名称和一定功能点代码块,这段代码块被封装起来,由一组语句组成,它们是JavaScript的基础模块单元,用于代码复用.信息隐藏和组合调用.一般来说,所谓编程 ...
- 计算区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9) 共出现了多少次?
#include<iostream> using namespace std; int main() { long long start, end , i, check, b, c, cn ...
- 洛谷 P2212 【[USACO14MAR]Watering the Fields S】
一道最小生成树模板题,这里用的Kruskal算法,把每两点就加一条边,跑一遍最小生成树即可. #include <bits/stdc++.h> using namespace std; s ...
- abp + vue 模板新建页面
新建页面 创建按对应的模块和实体 新建的模块需要进行注册
- ADAS感知开发问题
ADAS感知开发问题 1. 雨天相机 问题:雨天相机目标识别不稳.出现目标时断时续的情况 对策: 增加单雷达生成功能.当单雷达目标置信度高时直接由雷达生成目标. 2. 相机震动目标位置突变 问题 :相 ...
- HTML5(八)Web Workers
HTML 5 Web Workers web worker 是运行在后台的 JavaScript,不会影响页面的性能. 什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不 ...
- 武科WUST-CTF2020“Tiki组 ”
赛事信息 官网地址:https://ctfgame.w-ais.cn/参赛地址:https://ctfgame.w-ais.cn/起止时间:2020-03-27 18:00:00 - 2020-03- ...
- 成熟度模型:企业规模化推广敏捷和DevOps利器
摘要: 本文介绍了成熟度模型在软件开发行业的应用,重点阐述了成熟度模型对于敏捷和DevOps在企业中进行规模化推广的价值,探讨了成熟度模型的设计原则,并对于如何明智使用成熟度模型给出了建议. 导言 在 ...