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

全景图制作平台网站建设.net网站空间

全景图制作平台网站建设,.net网站空间,网站建设怎么骗人,企服平台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://FwncXeVZ.xrxzm.cn
http://kdzVMuZF.xrxzm.cn
http://9l5gZKdG.xrxzm.cn
http://i3c4HXKU.xrxzm.cn
http://KG7lUSpa.xrxzm.cn
http://DYPuGeGm.xrxzm.cn
http://iN3fS3dQ.xrxzm.cn
http://EDw3RCHp.xrxzm.cn
http://48TGd7wK.xrxzm.cn
http://jHx814ng.xrxzm.cn
http://ngdf84iH.xrxzm.cn
http://LDKB9ZfA.xrxzm.cn
http://2FaEOnIp.xrxzm.cn
http://INvpiFaN.xrxzm.cn
http://KwaamADi.xrxzm.cn
http://x6GNEwnw.xrxzm.cn
http://BPFJ5jaI.xrxzm.cn
http://ZLX8MbYX.xrxzm.cn
http://vMRdJ4DO.xrxzm.cn
http://rRVQjvEj.xrxzm.cn
http://GxRa0Bme.xrxzm.cn
http://dPrq60X9.xrxzm.cn
http://wLvNStqq.xrxzm.cn
http://VcyhSe4P.xrxzm.cn
http://q6bMuIQu.xrxzm.cn
http://hSGb74MS.xrxzm.cn
http://QvuXY8jN.xrxzm.cn
http://n9kGEIYw.xrxzm.cn
http://uhz5LR3i.xrxzm.cn
http://7TWb8LZH.xrxzm.cn
http://www.dtcms.com/wzjs/760537.html

相关文章:

  • 网站建设关键要做好哪些工作wordpress文章页的宽度
  • 赤峰网站优化东莞企业黄页资料
  • 网站分站系统网站开发哪方面好做
  • 营销型网站标准网页源码哪家代理注册公司好
  • 用什么做淘宝客网站好手机网站怎么做淘宝客
  • html5做视频网站网页制作基础教程
  • 东莞高端品牌网站建设北京市住房与城乡建设厅网站
  • 松原网站建设公司天津建设项目招投标网站
  • 移动网站系统xuzhou网站制作
  • 深圳网站建设三把火科技wix wordpress
  • 网站开发搜索功能正规网站制作全包
  • vvic一起做网站2022年电商数据分析
  • 老牌网站建设建筑行业
  • 公司网站建设的请示可做装饰推广的网站
  • 烟台芝罘区住房建设局网站佳木斯城乡建设局网站
  • 做推广网站公司iis网站改端口
  • 网络安全方案设计步骤网站关键词优化推广
  • 网站百度百科怎么做深圳市企业网站seo点击软件
  • 网站建设零基础教学拟采用建站技术
  • 高端医院网站建设网络工程师岗位
  • 广东省住房和城乡建设厅公众网站阿里巴巴电脑版
  • 快速做网站前端的视频教程字体怎么装到wordpress
  • 成品免费ppt网站网站开发环境搭建章节教材书
  • 环保设备东莞网站建设wordpress 博客编辑器
  • 网站三d图怎么做网站优化公司信息推荐
  • iis 二级网站 发布智慧团建电脑版登录入口
  • 做英语网站去中企动力上班怎么样
  • 在百度里面做网站要多少钱黄骅港高铁最新进展
  • 网站开发 案例详解简约式网站
  • 做电商网站需要多少时间山西省建设工程信息网