码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 力扣--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"]]
    

    提示:

    • 1 <= n <= 9

    该问题为典型的回溯问题,来看看代码吧

    1. class Solution {
    2. public:
    3. void put_queen(int x,int y,vectorint>>&attack)//x,y分别表示传进去的行和列,attack数组表示该行皇后可以攻击到的位置
    4. {
    5. static const int dx[]={-1,1,0,0,-1,-1,1,1};
    6. static const int dy[]={0,0,-1,1,-1,1,-1,1};
    7. attack[x][y]=1;
    8. for(unsigned int i=1;isize();i++){
    9. for(int j=0;j<8;j++){
    10. unsigned int nx=x+i*dx[j];
    11. unsigned int ny=y+i*dy[j];
    12. if(nx>=0&&nxsize()&&ny>=0&&nysize()){
    13. attack[nx][ny]=1;
    14. }
    15. }
    16. }
    17. }
    18. //line表示当前处理的行,n表示N皇后问题,queen数组表示皇后存储的位置,attack表示皇后攻击的位置,re表示存储N皇后的全部解法
    19. void backtrack(int line,int n,vector&queen,vectorint>>&attack,vector>&re)
    20. {
    21. if(line==n){
    22. re.push_back(queen);
    23. return;
    24. }
    25. for(int i=0;i
    26. if(attack[line][i]==0){
    27. vectorint>> temp=attack;
    28. queen[line][i]='Q';
    29. put_queen(line,i,attack);
    30. backtrack(line+1,n,queen,attack,re);
    31. attack=temp;
    32. queen[line][i]='.';
    33. }
    34. }
    35. }
    36. vector> solveNQueens(int n) {
    37. vector> re;//存储最终结果
    38. vectorint>> attack;//标记皇后攻击位置
    39. vectorqueen;//保存皇后位置
    40. for(int i=0;i
    41. attack.push_back((std::vector<int>()));
    42. for(int j=0;jpush_back(0);
    43. queen.push_back("");
    44. queen[i].append(n,'.');
    45. }
    46. backtrack(0,n,queen,attack,re);
    47. return re;
    48. }
    49. };

    这里我把题目链接贴上供各位查看

    https://leetcode.cn/problems/n-queens/

  • 相关阅读:
    分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
    基于bootstrap的二维码支付系统webAPP设计
    【torchvision】 torchvision.datasets.ImageFolder
    JSON数据处理工具-在线工具箱网站tool.qqmu.com的使用指南
    Jetson Nano 部署(3):TensorRT介绍
    面试经典150题——生命游戏
    为mysql添加TCMalloc库,以提升性能!
    django基于pythonweb的大学生兼职系统设计与分析
    每日刷题|贪心算法初识
    AE调试(人脸场景)
  • 原文地址:https://blog.csdn.net/qq_71416673/article/details/138096699
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号