码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 算法day30|复习


    30 第七章 回溯算法

    • 332.重新安排行程
    • 51. N皇后
    • 37. 解数独
    • 总结

    详细布置

    今天这三道题都非常难,那么这么难的题,为啥一天做三道?

    因为 一刷 也不求大家能把这么难的问题解决,所以 大家一刷的时候,就了解一下题目的要求,了解一下解题思路,不求能直接写出代码,先大概熟悉一下这些题,二刷的时候,随着对回溯算法的深入理解,再去解决如下三题。

    大家今天的任务,其实是 对回溯算法章节做一个总结就行。

    重点是看 回溯算法总结篇:

    代码随想录

    332.重新安排行程(可跳过)

    代码随想录

    51. N皇后(可跳过)

    1. var solveNQueens = function(n) {
    2. let result = []
    3. const isValid = function(chessboard,row,col,n){
    4. // col
    5. for(let i = 0;i<row;i++){
    6. if(chessboard[i][col] === 'Q'){
    7. return false
    8. }
    9. }
    10. // 45
    11. for(let i = row-1,j=col+1;i>=0 && j<n;i--,j++){
    12. if(chessboard[i][j]=== 'Q'){
    13. return false
    14. }
    15. }
    16. // 135
    17. for(let i = row-1,j=col-1;i>=0&&j>=0;i--,j--){
    18. if(chessboard[i][j]==='Q'){
    19. return false
    20. }
    21. }
    22. return true
    23. }
    24. const transform = function(chessboard){
    25. let result = []
    26. chessboard.forEach(row=>{
    27. let rowStr = ''
    28. row.forEach(value=>{
    29. rowStr += value
    30. })
    31. result.push(rowStr)
    32. })
    33. return result
    34. }
    35. const backtracking = function(chessboard,row){
    36. // when end?
    37. if(row === n){
    38. // 需要转换
    39. result.push(transform(chessboard))
    40. return
    41. }
    42. for(let col = 0;col<n;col++){
    43. if(isValid(chessboard,row,col,n)){
    44. chessboard[row][col] = 'Q'
    45. backtracking(chessboard,row+1)
    46. chessboard[row][col] ='.'
    47. }
    48. }
    49. }
    50. let chessboard = new Array(n).fill([]).map(()=>(new Array(n).fill('.')))
    51. backtracking(chessboard,0)
    52. return result
    53. };

    代码随想录

    视频讲解:这就是传说中的N皇后? 回溯算法安排!| LeetCode:51.N皇后_哔哩哔哩_bilibili

    37. 解数独(可跳过)

    代码随想录

    视频讲解:回溯算法二维递归?解数独不过如此!| LeetCode:37. 解数独_哔哩哔哩_bilibili

    1. var solveSudoku = function (board) {
    2. const isValid = function (board, k, row, col) {
    3. // row
    4. for (let i = 0; i < board.length; i++) {
    5. if (i!== col && board[row][i] === k) {
    6. return false
    7. }
    8. }
    9. // col
    10. for (let i = 0; i < board.length; i++) {
    11. if (i!== row && board[i][col] === k) {
    12. return false
    13. }
    14. }
    15. //九方格
    16. let x = Math.floor(row / 3) * 3
    17. let y = Math.floor(col / 3) * 3
    18. for (let i = x; i < x + 3; i++) {
    19. for (let j = y; j < y + 3; j++) {
    20. if (i!== row && j!= col && board[i][j] === k) {
    21. return false
    22. }
    23. }
    24. }
    25. return true
    26. }
    27. const backtracking = function () {
    28. for (let row = 0; row < board.length; row++) {
    29. for (let col = 0; col < board[0].length; col++) {
    30. if (board[row][col] === '.') {
    31. for (let k = 1; k < 10; k++) {
    32. if (isValid(board, `${k}`, row, col)) {
    33. board[row][col] = `${k}`
    34. if (backtracking()) { return true }
    35. board[row][col] = '.'
    36. }
    37. }
    38. return false
    39. }
    40. }
    41. }
    42. return true
    43. }
    44. backtracking()
    45. return board
    46. };

    总结

    代码随想录

  • 相关阅读:
    HDLBits-Lfsr32
    集群常用群起脚本
    Java集合大总结——Map集合
    Spark SQL案例【电商购买数据分析】
    TRITC-透明质酸,TRITC-hyaluronic acid,四甲基罗丹明标记透明质酸
    k8s组件和网络插件挂掉,演示已有的pod是否正常运行
    远程办公软件成功案例——欧洲之翼航空公司通过 OpenText Exceed TurboX 提高了远程访问的可访问性、安全性,增加了利润
    【论文解读】RLAIF基于人工智能反馈的强化学习
    动态规划算法(3)(不同方案数问题+拆分问题)
    react-router-dom使用指南(最新V6)
  • 原文地址:https://blog.csdn.net/weixin_42173016/article/details/128023927
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号