首页 > 其他分享 >51. N 皇后

51. N 皇后

时间:2023-06-07 17:01:01浏览次数:42  
标签:... .. int 51 board 皇后 row

51. N 皇后

按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。

n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。

示例 1:

输入:n = 4
输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]
解释:如上图所示,4 皇后问题存在两个不同的解法。
示例 2:
输入:n = 1
输出:[["Q"]]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/n-queens
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

回溯

class Solution {
public:
    vector<vector<string>>res;

    bool invalid(vector<string>board,int row,int col){
        //检查每一列是否合法
        for(int i=0;i<board.size();i++){
            if(i!=row&&board[i][col]=='Q')
                return false;
        }
        //检查左上
        for(int i=row-1,j=col-1;i>=0&&j>=0;i--,j--){
            if(board[i][j]=='Q')    return false;
        }
        //检查右上
        for(int i=row-1,j=col+1;i>=0&&j<board[0].size();i--,j++){
            if(board[i][j]=='Q')    return false;
        }
        return true;
    }

    void backtrack(vector<string>&board,int row){
        if(row==board.size()){
            res.push_back(board);
            return;
        }
        for(int col=0;col<board[0].size();col++){
            if(!invalid(board,row,col)) continue;
            board[row][col]='Q';
            //处理下一层
            backtrack(board,row+1);
            board[row][col]='.';
        }
    }

    vector<vector<string>> solveNQueens(int n) {
        //初始化棋盘为空 .
        vector<string>board(n,string(n,'.'));
        backtrack(board,0);
        return res;
    }
};

标签:...,..,int,51,board,皇后,row
From: https://www.cnblogs.com/SkyDusty/p/17463901.html

相关文章

  • 516. 最长回文子序列
    给你一个字符串s,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。示例1:输入:s="bbbab"输出:4解释:一个可能的最长回文子序列为"bbbb"。>动态规划classSolution{public:......
  • YS9082HC+B27B固件量产工具,YS9082HT可参考,YS9082HC+镁光MT29F512G08EBLCE开卡!YS9082HP
    YS9082HC+B27B,镁光MT29F512G08EBLCE开卡!闪存ID:2C,C3,08,32,E6,00。如下图,不知道为什么检测出来的是9081?开卡设置,从量产部落下载的YS9082HCMPTool,如下图:结果报错:重新设置,更改了大小,240G改到了160G!分析是坏块过多了!我有不少B27颗粒的坏块都多,还是主控问题?我的其他两片B27,开120G都......
  • TDK5100F-ASEMI代理英飞凌射频发射器TDK5100F
    编辑:llTDK5100F-ASEMI代理英飞凌射频发射器TDK5100F型号:TDK5100F品牌:Infineon(英飞凌)封装:TSSOP-10-3mm特性:射频器件全集成频率合成器无外部组件的VCOASK和FSK调制频率范围433-435MHz高效功率放大器(通常为5dBm)低供电电流电源电压范围2.1…4V温度范围−40+125摄氏......
  • PS3111固件找到了,贴一个Phison自封颗粒的PS3111 512GB的硬盘
    硬盘是我在某鱼花了70块钱包邮淘的坏盘,颗粒封装是群联自封的,看ID却是凯侠的BICS3(纯正群联自封TSBBiCS3,T开头是东芝,C开头才是长江)盘是神舟笔记本上面的坏盘,主控是PS5008,短命的主控,协议速度是pcie3.0x2。拆下颗粒,植球,找一个mSATA的PS3111空板,全部焊接上去。完成品,准备开卡。先清空fl......
  • P4451 [国家集训队]整数的lqp拆分
    Description求\[\begin{aligned}&\sum\prod_{i=1}^mF_{a_i}\\&m>0\\&a_1,a_2\ldotsa_m>0\\&a_1+a_2+\ldots+a_m=n\end{aligned}\]由于答案可能非常大,所以要对\(10^9+7\)取模。Solution题目中有整数拆分的部分,可以想到用生成函数的相关知识。设斐波那契数......
  • HONEYWELL工业模块SPS5713 51199930-100
    W;① ⑧ 0 ③ 0 ① 7  7  ⑦ 5 ⑨HONEYWELL工业模块SPS571351199930-100,05074-A-012205704-A-012105704-A-0131,05701-A-0361,05704-A-0146,05704-A-0145,05701-A-0361,05704-A-0144。SC-PCMX0151307195-175,05701-A-0550,一般信息产品编号:SYN5201-2277......
  • 算法学习day44动态规划part06-518、377
    packageLeetCode.DPpart06;/***518.零钱兑换II*给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。*请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。*假设每一种面额的硬币有无限个。*题目数......
  • LED汽车大灯BOM表+线路图 AP5125降压恒流IC应用
    1,方案来源:深圳市世微半导体有限公司汤小姐2,产品描述 AP5125是一款外围电路简单的Buck型平均电流检测模式的LED恒流驱动器,适用于8-100V电压范围的非隔离式大功率恒流LED驱动领域。芯片采用固定频率140kHz的PWM工作模式,利用平均电流检测模式,因此具有优异的负载调整......
  • Leetcode 2517. 礼盒的最大甜蜜度
    题目:给你一个正整数数组price,其中price[i]表示第i类糖果的价格,另给你一个正整数k。商店组合k类不同糖果打包成礼盒出售。礼盒的甜蜜度是礼盒中任意两种糖果价格绝对差的最小值。返回礼盒的最大甜蜜度。难度:中等示例1:输入:price=[13,5,1,8,21,2],k=3......
  • 皇后问题2
    #include<iostream>usingnamespacestd;intarr[10][10];//用于存储棋盘以及之后的皇后摆放位置intans;//存储最后的答案booljudge(intx,inty)//用于判断这个地方能否放置皇后{inti,j;for(j=1;j<=......