题目:

这 道 题 呢 唯 一 一 点 与 其 他 题 目 不 同 之 处 就 是 它 有 有 3 个 v i s 数 组

以及是一行一行深搜的。

主要思路为:

从第一行 到第n行,一行放一个,这一行 从第一列到第n列遍历,同时满足下列条件即可放置皇后

1.这一列 没放

2.这一位置的对角线 没放

3.这一位置的反对角线 没放

程序实现:

深搜的u参数表示行数,dfs中的i表示列数,col[i] 表示i列的状态1表示已放过了0表示没放过,dg[u+i]表示u 行 i列的斜线的状态1表示已放过了0表示没放过,udg[n-u+i] 表示u行i列的反斜线的状态1表示已放过了0表示没放过。

程序:

#include<bits/stdc++.h>
using namespace std;
const int N=20;
int n,dg[N],udg[N],col[N];
char g[N][N];
void dfs(int u)
{
if(u==n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<g[i][j];
}
cout<<endl;
}
puts("");
return;
}
else
{
for(int i=0;i<n;i++)
{
if(dg[u+i]==0&&udg[n-u+i]==0&&col[i]==0)
{
g[u][i]='Q';
dg[u+i]=1;
udg[n-u+i]=1;
col[i]=1;
dfs(u+1);
dg[u+i]=0;
udg[n-u+i]=0;
col[i]=0;
g[u][i]='.';
}
}
}
}
int main()
{
cin>>n;
memset(g,'.',sizeof(g));
dfs(0);
return 0;
}

最新文章

  1. MySql操作
  2. memcached
  3. bootstrap 无限极菜单
  4. 实验二 Java面向对象程序设计
  5. BZOJ-4195 NOI2015Day1T1 程序自动分析 并查集+离散化
  6. CSS中zoom:1的作用 ,小标签大作用
  7. Node 写文件
  8. log4net自定义字段写入SqlServer数据库 ASP.net
  9. pyqt小例子 treewidget
  10. Android开发效率的小技巧
  11. 使用react-router实现单页面应用路由
  12. Angular.js 1++快速上手
  13. STL-Vector源码剖析
  14. JavaScript中的事件冒泡?事件传播的解释
  15. 树莓派中编译OpenCV3.4.1和OpenCvSharp
  16. ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(二)
  17. URL重写2.1.mis
  18. 20170622xlVBA多部门分类汇总同类合并单元格
  19. hadoop 学习(一)ubuntu14.04 hadoop 安装
  20. 16G的U盘 4G的压缩

热门文章

  1. 嵌入式-C语言基础:怎么样使得一个指针指向固定的区域?
  2. java基础篇—基础语法
  3. Windows自带管理工具
  4. devexpress中dockManager保存布局后恢复不正常
  5. pagehelper踩坑记之分页乱套
  6. Java实现递归查询树结构
  7. day23 约束 &amp; 锁 &amp; 范式
  8. JavaScript入门⑥-WEB浏览器API
  9. 预编译SQL为什么能够防止SQL注入
  10. Dubbo 3 之 Triple 流控反压原理解析