首页 > 其他分享 >DFS

DFS

时间:2023-04-05 21:33:56浏览次数:26  
标签:输出 .. ... int dg DFS ++

1. n-皇后问题

题目描述

\(n-\)皇后问题是指将 \(n\) 个皇后放在 \(n \times n\) 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。

image

现在给定整数 \(n\),请你输出所有的满足条件的棋子摆法。

输入格式

共一行,包含整数 \(n\)。

输出格式

每个解决方案占 \(n\) 行,每行输出一个长度为 \(n\) 的字符串,用来表示完整的棋盘状态。
其中 . 表示某一个位置的方格状态为空,Q 表示某一个位置的方格上摆着皇后。
每个方案输出完成后,输出一个空行。
注意:行末不能有多余空格。
输出方案的顺序任意,只要不重复且没有遗漏即可。

数据范围

\(1≤n≤9\)

输入样例

4

输出样例

.Q..
...Q
Q...
..Q.

..Q.
Q...
...Q
.Q..


算法一

(dfs) \(O()\)

算法内容

blabala

C++代码

#include <iostream>

using namespace std; 

const int N = 20;

int n;
char g[N][N];
bool col[N], dg[N], udg[N];

/*
用b来表示对角线
正对角线:y = x + b ==>  b = y - x(由于可能为负,所以加上一个偏移量n)
反对角线:y = -x + b ==> b = y + x
*/

void dfs(int u) //u代表行数
{
    if (u == n)
    {
        for (int i = 0; i < n; i ++ ) puts(g[i]);
        puts("");
        return;
    }
    else
    {
        for (int i = 0; i < n; i ++ ) //枚举每一列
        {
            if (!col[i] && !dg[i - u + n] && !udg[i + u])
            {
                g[u][i] = 'Q';
                col[i] = dg[i - u + n] = udg[i + u] = true;
                dfs(u + 1);
                
                col[i] = dg[i - u + n] = udg[i + u] = false;
                g[u][i] = '.';
            }
        }
    }
}

int main()
{
    cin >> n;
    for (int i = 0; i < n; i ++ )
        for (int j = 0; j < n; j ++ )
            g[i][j] = '.';
    
    dfs(0);
    
    return 0;
}

标签:输出,..,...,int,dg,DFS,++
From: https://www.cnblogs.com/lhycoder/p/17290975.html

相关文章

  • 第二十届浙大城市学院程序设计竞赛 I.Magic Tree DFS序线段树
    传送门大致思路:  我们知道dfs序上的整颗子树dfs序编号连续,因为每次删除一个点或者新增一个点都导致子树上所有点的深度加一或者减一。由于是区间修改所以我们考虑dfs序上建线段树。  #include<iostream>#include<cstring>#include<iomanip>#include<algorithm>#in......
  • 蓝桥杯(全球变暖dfs)
    蓝桥杯(全球变暖dfs)importjava.util.Scanner;/***该题使用了深度优先算法dfs用于把相连的#号当成一块大陆,并通过数组记录下有几块大陆*dfs算法并不难,只要对用dfs处理过后留下的aes数组和sea数组进行处理得到结果即可*我的思路就是*1、sea数组记录源数据,然后判断是......
  • hdfs集群的扩容和缩容
    目录1、背景2、集群黑白名单3、准备一台新的机器并配置好hadoop环境3.1我们现有的集群规划3.2准备一台新的机器3.2.1查看新机器的ip3.2.2修改主机名和host映射3.2.3配置时间同步3.2.4关闭防火墙3.2.5新建hadoop部署用户3.2.6复制hadoop04机器上的/etc/hosts文件到集群的另......
  • POJ 2773 Happy 2006 二分+容斥原理(二进制枚举或dfs)
    Happy2006TimeLimit: 3000MS MemoryLimit: 65536KTotalSubmissions: 14003 Accepted: 4946DescriptionTwopositiveintegersaresaidtoberelativelyprimetoeachotheriftheGreatCommonDivisor(GCD)is1.Forinstance,1,3,5,7,9...areallrelativel......
  • 【FastDFS分布式文件系统】5.FastDFS客户端的配置、启动和常用命令
    上一篇我们介绍了FastDFS服务端的tracker追踪服务器和storage存储服务器,本篇来介绍一下客户端的启动,以及外部客户端如何与FastDFS服务端进行连接。和之前一样,服务端部署在三台服务器上:其中192.168.195.129是tracker追踪服务器,192.168.195.130和192.168.195.131......
  • 【FastDFS分布式文件系统】6.FastDFS客户端启动与Java连接
    上一篇我们讲解了如何配置和启动FastDFS客户端,以及客户端上传下载的一些常用命令。那么,在许多需要进行分布式文件上传与下载的系统中,就不能像执行Linux命令一样去上传和下载文件,它们需要使用开发系统的语言去操作客户端使用其命令与服务端进行交互,此时FastDFS......
  • dfs理解
    dfs理解201深搜(DFS)哔哩哔哩bilibili董晓-博客园(cnblogs.com)深搜的时机在扩展当前节点的邻边之前,即for当前节点的儿子节点之前,刚进入当前这个节点。for完当前节点的所有儿子节点之后,要离开当前节点了。开始for当前节点的扩展邻边时,即刚从当前节点出去。此时可以从父节点向......
  • AcWing 第 97 场周赛 ABC(dfs)
    https://www.acwing.com/activity/content/competition/problem_list/3088/果然绩点成绩和竞赛水平总得寄一个(tome4944.热身计算#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<LL,LL>PII;constLLMAXN=1e18,MINN=-MAXN,INF=0x3f3f3......
  • hdfs disk balancer 磁盘均衡器
    目录1、背景2、hdfsbalancer和hdfsdiskbalancer有何不同?3、操作3.1生成计划3.2执行计划3.3查询计划3.4取消计划4、和diskbalancer相关的配置5、额外知识点5.1新的block存储到那个磁盘(卷)中5.2磁盘数据密度度量标准6、参考文档1、背景在我们的hadoop集群运行一段过......
  • HDFS Balancer负载均衡器
    目录1、背景2、什么是平衡2.1每个DataNode的利用率计算2.2集群的利用率2.3平衡3、hdfsbalancer语法4、运行一个简单的balance案例4.1设置平衡数据传输带宽4.2执行ban......