首页 > 其他分享 >【AcWing】843. n皇后问题

【AcWing】843. n皇后问题

时间:2024-07-06 21:29:56浏览次数:6  
标签:843 int 斜线 namespace char const 皇后 2n AcWing


剪纸就是判断当前方案一定不合法了就不往下搜了,把这个枝减掉,直接回溯。

代码

#include<iostream>

using namespace std;

const int N=10;

int n;
char g[N][N];//棋盘
bool col[N],dg[N*2],udg[N*2];//分别代表 列 斜线 反斜线有没有占用,对角线个数为2n-1,开2n

void dfs(int u){//u是第几行
    if(u==n){
        for(int i=0;i<n;i++) puts(g[i]);
        printf("\n");
        return;
    }
    for(int i=0;i<n;i++){
        if(!col[i] && !dg[-u+i+n] && !udg[u+i]){
            g[u][i]='Q';
            col[i] = dg[-u+i+n] = udg[u+i] = true;
            dfs(u+1);//不做就剪枝了
            col[i] = dg[-u+i+n] = udg[u+i] = false;
            g[u][i]='.';
        }
    }
}

int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            g[i][j]='.';
    dfs(0);
    return 0;
}

标签:843,int,斜线,namespace,char,const,皇后,2n,AcWing
From: https://blog.csdn.net/Wheattail/article/details/140235991

相关文章

  • 【AcWing】842. 排列数字(DFS)
    DFS是树形结构,深度优先搜索。dfs可以算作递归。横线上填和前面不一样的数字。每一次向下探索都一条路走到黑,直到不能走再回溯。#include<iostream>usingnamespacestd;constintN=10;intn;intpath[N];//存放走过的路径boolst[N];//存放1~n哪个数用过了,全局b......
  • 八皇后
     题目描述一个如下的​6*6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列246135来描述,第i个数字表示在第i行的相应位置有一个棋子,如下:行号​123456列......
  • 贪心推公式——AcWing 125. 耍杂技的牛
    贪心推公式定义贪心算法是一种在每一步选择中都采取在当前状态下最优的选择,希望通过局部的最优选择来得到全局最优解的算法策略。运用情况问题具有最优子结构,即一个问题的最优解包含其子问题的最优解。可以通过局部最优决策逐步推导到全局最优。问题的选择策略相对明确且易......
  • AcWing算法基础课笔记——求组合数3
    求组合数Ⅲ20万组数据,1≤b≤a≤1......
  • AcWing算法基础课笔记——高斯消元
    高斯消元用来求解方程组a11x1+......
  • AcWing算法基础课笔记——求组合数2
    求组合数Ⅱ1万组数据,1≤b≤a≤1......
  • AcWing算法基础课笔记——求组合数1
    求组合数Ⅰ10万组数据,1≤b≤a≤2000......
  • AcWing 5726. 连续子序列
    5726.连续子序列-AcWing题库01trie的不错的练习题。题目说了求一段连续子序列的异或和,因为异或有结合律,所以我们可以直接预处理一个前缀异或和,即\(a[l,r]=sum[r]\operatorname{xor}sum[l-1]\)。然后求一段异或和就变成了求任意两个\(sum\)的异或和,而这就可以用到0......
  • 树形DP——AcWing 285. 没有上司的舞会
    目录树形DP定义运用情况注意事项解题思路AcWing285.没有上司的舞会 题目描述运行代码代码思路改进思路改进代码(AI)其它代码代码思路树形DP定义树形DP是在树上进行的动态规划。它利用树的结构特点,通过递归或迭代的方式,在每个节点上进行状态计算和转移,以求......
  • 数位统计DP——AcWing 338. 计数问题
    数位统计DP定义数位DP(DigitalDP)是一种用于解决与数字的数位相关问题的动态规划算法。它将数字的每一位看作一个状态,通过转移状态来计算满足特定条件的数字个数或其他相关统计信息。运用情况统计满足特定条件的数字个数,例如在给定范围内有多少个数字满足某些数位特征。计算......