当前位置: 首页 > wzjs >正文

智能管理系统定制开发如何做好网站推广优化

智能管理系统定制开发,如何做好网站推广优化,新锐媒体网站建设方案,稿定设计app免费版官方leetcode 51 思路 本题可以使用回溯算法来解决。回溯算法通过尝试所有可能的解决方案来找到问题的解的算法,当发现当前的选择无法得到有效的解决方案时,就回溯到上一步,尝试其他的选择。对于 N 皇后问题,我们可以逐行放置皇后&…

leetcode 51
在这里插入图片描述

思路

本题可以使用回溯算法来解决。回溯算法通过尝试所有可能的解决方案来找到问题的解的算法,当发现当前的选择无法得到有效的解决方案时,就回溯到上一步,尝试其他的选择。对于 N 皇后问题,我们可以逐行放置皇后,在每一行选择一个合适的列来放置皇后,若当前选择导致冲突,就回溯到上一行,重新选择列

初始化棋盘
const dashboard = Array(n).fill().map(() => Array(n).fill('.'));
  • dashboard 是一个 n×n 的二维数组,初始时每个位置都用 . 表示,表示该位置没有放置皇后
回溯函数
const backtracking = (dashboard, n, row) => {if (row === n) {result.push(dashboard.map(item => item.join('')))return;}for (let i = 0; i < n; i++) {if (isValid(dashboard, row, i, n)) {dashboard[row][i] = 'Q'backtracking(dashboard, n, row + 1)dashboard[row][i] = '.'}}
}
  • 终止条件:当 row 等于 n 时,说明已经成功地在每一行都放置了一个皇后,此时将当前的棋盘布局加入到 result 数组中
  • 遍历列:对于当前行 row,尝试在每一列 i 放置皇后
  • 检查合法性:调用 isValid 函数检查在 (row, i) 位置放置皇后是否合法
  • 递归:如果合法,将皇后放置在 (row, i) 位置,然后递归调用 backtracking 函数处理下一行
  • 回溯:递归返回后,将 (row, i) 位置的皇后移除,恢复为 .,以便尝试其他列
棋盘的合法性校验:关键!!!
const isValid = (dashboard, row, col, n) => {if (row === 0) { return true }// 判断是否在同一列for (let i = 0; i < row; i++) {if (dashboard[i][col] === 'Q') {return false}}// 判断是否在45度角for (let i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {if (dashboard[i][j] === 'Q') {return false}}// 判断是否是135度角for (let i = row - 1, j = col + 1; i >= 0 && j < n; i--, j++) {if (dashboard[i][j] === 'Q') {return false}}return true
}
  • 第一行:如果 row 为 0,说明是第一行,任何位置都可以放置皇后,直接返回 true
  • 列检查:检查当前列 col 上是否已经有皇后,如果有则返回 false
  • 45 度斜线检查:从当前位置 (row, col) 向左上方遍历,如果发现有皇后则返回 false
  • 135 度斜线检查:从当前位置 (row, col) 向右上方遍历,如果发现有皇后则返回 false
  • 合法:如果以上检查都通过,则返回 true,表示该位置可以放置皇后

完整实现

var solveNQueens = function (n) {let result = [];// 初始化棋盘const dashboard = Array(n).fill().map(() => Array(n).fill('.'));const backtracking = (dashboard, n, row) => {if (row === n) {result.push(dashboard.map(item => item.join('')))return;}for (let i = 0; i < n; i++) {if (isValid(dashboard, row, i, n)) {dashboard[row][i] = 'Q'backtracking(dashboard, n, row + 1)dashboard[row][i] = '.'}}}backtracking(dashboard, n, 0)return result;
}const isValid = (dashboard, row, col, n) => {if (row === 0) { return true }// 判断是否在同一列for (let i = 0; i < row; i++) {if (dashboard[i][col] === 'Q') {return false}}// 判断是否在45度角for (let i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {if (dashboard[i][j] === 'Q') {return false}}// 判断是否是135度角for (let i = row - 1, j = col + 1; i >= 0 && j < n; i--, j++) {if (dashboard[i][j] === 'Q') {return false}}return true
}
http://www.dtcms.com/wzjs/12917.html

相关文章:

  • 92号汽油价格最新湖南靠谱seo优化
  • wordpress 默认站点郑州做网站最好的公司
  • 泊美网站建设总目的今日头条武汉最新消息
  • 大连哪家公司做网站好2021最火关键词
  • 网站服务器开发网页制作代码html制作一个网页
  • 网站受到攻击一份完整的活动策划方案
  • wordpress写的软文关键词优化软件
  • 贵州网站建设推荐重庆seo入门教程
  • 网站策划包括哪些内容镇江seo快速排名
  • 建设图片展示网站百度seo 优化
  • lnmp wordpress 404优化网站服务
  • 南山网站制作联系电话seo推广方法集合
  • 合肥市城乡建设厅网站网络运营课程培训班
  • 郑州高新区做网站开发的公司百度指数代表什么
  • 淘宝网站建设的目的百度一下了你就知道官网
  • 外贸婚纱网站网站推广计划
  • 小木桥建设网站黄山seo公司
  • 专业营销网站开发广州的百度推广公司
  • 百度做网站续费费用怎样弄一个自己的平台
  • 旅游网站开发内容关键词优化的五个步骤
  • 专业做网站套餐设计师培训班多少钱
  • 平台设计网站公司电话号码seo网络推广招聘
  • 网站系统怎么做的seo云优化如何
  • 自己免费制作app免费网站推广优化
  • 网站优化分析一个免费的网站
  • 公司网站建设需求分析培训网
  • 深圳做网站个人宁波seo基础入门
  • 衢州网站建设招聘网络广告宣传平台
  • 网站设计官网人力资源培训
  • 建设银行支行网站排名前50名免费的网站