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

专业建站/国家提供的免费网课平台

专业建站,国家提供的免费网课平台,wordpress获取qq头像评论,宁波市北仑区建设局网站算法描述 摘自百度: 八皇后问题是一个以国际象棋为背景的问题:如何能够在 88 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上…

算法描述

摘自百度

八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。

解题思路

采用递归+回溯的方式进行求解。

给出一个二维数组,遍历所有行,在每一行中找到一个合适的值,如果满足条件就把该位置设置成1,并继续遍历下一行,如果能持续的遍历到最后一行并且找到满足条件的点,则成功找到一组解。
找到一组解之后,再进行回溯,因为一行中可能有多个点满足条件,所以要把一行中所有的点都进行判断,最终找到所有满足条件的解。

代码实现

int queueCount = 0;void queue(int[][] array, int row) {if (row >= array.length) {print(array);queueCount ++;return;}for (int i=0; i<array[row].length; i++) {if (!check(array, row, i)) { // 检查是否满足条件continue;}array[row][i] = 1;queue(array, row + 1); // 遍历下一行的每一列array[row][i] = 0; // 回溯}
}boolean check(int[][] array, int row, int column) {for (int i=0; i<array.length; i++) {// 检查是否在同一列if (array[i][column] == 1) {return false;}// 检查主对角线int a1 = row - i;int a2 = column - i;if (a1 >= 0 && a2 >= 0) {if (array[a1][a2] == 1) {return false;}}// 检查副对角线a1 = row - i;a2 = column + i;if (a1 >= 0 && a2 < array[a1].length) {if (array[a1][a2] == 1) {return false;}}}return true;
}

最终结果

0, 0, 0, 0, 0, 0, 0, 1,
0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0,

0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 1, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 1, 0, 0, 0,

queue count 92

TIPS

最开始考虑通过其他方式保存上一次递归的结果,但是后来想到其实每一次递归总会得出一个结果,如果不满足则不用输出,如果满足则可以在递归的最深一层输出。
而且递归各个分支的结果相互不影响,所以可以采用回溯的方式在一个分支完成后重置结果,避免针对每一个分支都单独保存一份中间执行结果。

http://www.jmfq.cn/news/5266495.html

相关文章:

  • 同样也是做严选的网站/亚马逊关键词排名提升
  • 网站建设网站推广优化/百度快照优化培训班
  • 在线直播教学网站是怎么做的/app开发费用一般多少钱
  • 杭州城乡建设委网站/百度网页版登录入口官网
  • 企业邮箱后缀/seo关键词排名优化技巧
  • qt网站开发/营销培训内容有哪些
  • 给个手机网站就这么难吗/丹东seo推广优化报价
  • 怎么用2级目录做网站/seo网站优化怎么做
  • 小程序api调用/seo职位描述
  • html免费网站模板/seo关键词优化软件app
  • 网站防护找谁做/关键词排名seo
  • 网站建设的十点优势/福州seo招聘
  • 合肥企业网站建设哪个好/厦门人才网最新招聘信息网
  • 做网站需要什么电脑配置/深圳做网站
  • wordpress 内容摘要/牛排seo
  • 封面型网页网站有哪些/宁波百度seo点击软件
  • 乳山网站开发/百度权重划分等级
  • 管理网站怎么做的/谷歌浏览器网页版
  • 公司网站模板最新/夸克搜索引擎入口
  • 如何选择武进网站建设/石家庄seo关键词
  • 做网站需要什么专业/站长工具域名
  • 电脑网站建设策划书/网络推广都有哪些方式
  • 网站信息推广的策略有哪些/百度平台商家联系方式
  • 做yield网站多少钱/上海搜索推广
  • 英文网站建设目的/山东seo
  • 学美工大概要多少学费/站长网站优化公司
  • 手机wap版网站制作/网页制作的软件有哪些
  • 怎样做网站的背景图片/天津seo外包
  • 西安企业网站建设哪家好/外链代发软件
  • 新乡网站建设waterseo/seo推广软件排行榜前十名