用百度搜索八皇后问题,几乎清一色都是用回溯,有兴趣的同学可参考:从全排列和八皇后问题谈回溯。

解决一个问题,我们应该充分利用已有的条件,化繁为简。

$a=[0,1,2,3,4,5,6,7];

可以看到,这个数组的下标刚好也是0到7——对应着八皇后棋盘的0行到7行。而数组的这八个各不相同值,则对应八皇后棋盘的0到7列——所有满足八皇后的排列,都应当是这8个数字全排列的子集!

因此,我们首先求出所有的排列。

<?php
$a=[0,1,2,3,4,5,6,7];
function f($a,$str=''){if(count($a)==1){$_GET[]=$str.$a[0];return ;}for($i=0;$i<count($a);$i++){list($a[0],$a[$i])=[$a[$i],$a[0]];f(array_slice($a,1),$str.$a[0]);}
}
f($a); 

接着,找出满足八皇后约束条件的字排列即可。

foreach($_GET as $n){$bool=true;for($i=7;$i>=1;$i--){if(!$bool){break;}    for($j=$i-1;$j>=0;$j--){if(abs($n[$i]-$n[$j])==$i-$j){   $bool=false;break;}    }}if($bool){$_POST[]=$n;}
}
print_r($_POST);

用全排列的方法解决八皇后问题相关推荐

  1. 运用全排列的方法解决八皇后问题

    运用全排列的方法解决八皇后问题,可以分为两部分:全排列和八皇后,下面我将分开说明两个步骤. 首先说明八皇后: 第一步:就是把皇后按照0到8编号,然后对八个皇后进行全排列,一共有40320种排列方式. ...

  2. 回溯法在解决八皇后问题中的应用

    回溯法:有这样一类题目,它们要求在相对问题的输入规模按照指数速度增长(或者更快)的域中,找出一个具有指定特性的元素.例如:在图顶点的所有排列中求一个哈密顿回路,在背包问题的一个实例中求其中最有价值的物 ...

  3. 遗传算法解决八皇后问题

    遗传算法解决八皇后问题 程序设计的概要思想 编码方案 适应度的计算 初始种群 选择算子 交叉算子 变异算子 终止策略 程序的主要函数及其作用 运行结果截图 Python源代码 程序设计的概要思想 遗传 ...

  4. 遗传算法解决八皇后问题(java源码)

    本文源码下载链接:https://download.csdn.net/download/goulvjiang3176/11221063 另有贪心算法解决八皇后问题的源码下载链接:https://dow ...

  5. 用lua解决八皇后问题

        要解决八皇后问题,首先必须认识到每一行中只能有一个皇后.因此,可以用一个由8个数字组成的简单数组来表示可能的解决方案.例如,数组{3,7,2,1,8,6,5,4}表示皇后在棋盘中的位置分别是( ...

  6. Python:各种算法解决八皇后问题

    文章目录 1 八皇后问题 2 解决方案 3 性能对比 4 总结 1 八皇后问题 问题:有一个8乘8的棋盘,现在要将八个皇后放到棋盘上,满足:对于每一个皇后,在自己所在的行.列.两个对角线都没有其他皇后 ...

  7. Python解决八皇后问题

    Python解决八皇后问题 参考文章: (1)Python解决八皇后问题 (2)https://www.cnblogs.com/littleseven/p/5362791.html 备忘一下.

  8. 回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案

    回溯算法解决八皇后 4-皇后问题 (4 - Queen's problem) In 4- queens problem, we have 4 queens to be placed on a 4*4 ...

  9. Python:爬山法/随机重启爬山法/允许侧移的爬山法解决八皇后问题

    文章目录 1 八皇后问题 2 程序代码 2.1 程序1 2.2 程序2 2.3 程序3 2.3.1 爬山法 2.3.2 随机重启爬山法 2.3.3 允许皇后侧移的爬山法 3 评价 1 八皇后问题 有一 ...

最新文章

  1. Data - 数据思维 - 中篇
  2. Docker应用:Kubernetes(容器集群)
  3. 一行代码:你的纯文本秒变Markdown
  4. 作弊阴影罩棋盘,人工智能咋避嫌?
  5. w3wp trace文件Debug
  6. map mybatis 的字段返回0_Mybatis 你踩过坑吗?
  7. Django从理论到实战(part47)--ListView类
  8. 实验大作业c语言实现简单ftp,C 语言实现 FTP 服务器
  9. Telnet和FTP
  10. git tag打标签常用命令
  11. 新网域名服务故障的N种可能
  12. 十大笔记本电脑排行_2020双十一,十大高性价比游戏笔记本电脑值得买排行榜之搭载144Hz电竞屏机型(配置推荐)福利放送...
  13. C 线程同步的四种方式(Linux)
  14. Unity3d 周分享(11期 2019.2.16)
  15. 基于WEKA实现时间序列的预测
  16. 深度学习已入末路,AI未来是图网络
  17. blender2.8 使用RetopoFlow拓扑手臂护腕 (灵活使用Contours)
  18. 《数字逻辑与计算机设计基础》
  19. Java实现简单的数字雨
  20. 氢化溶血卵磷脂行业研究分析

热门文章

  1. 快速翻译维多利亚写作体裁作品
  2. java-php-net-python-金拱门自动订餐系统报告计算机毕业设计程序
  3. 男人,请把哄的时间延长些
  4. capesandbox模拟登录案例
  5. 安装了xp和vista两个版本后,删除vista系统
  6. alertdialog 自定义样式回调选手_日志MIUI 10 9.8.7 内测更新资讯 小米8自定义水印...
  7. CoreDraw-X4X5X6-Win10菜单栏异常问题
  8. 吃掉脂肪,狂减33斤!午餐菜单一次性公开!
  9. C语言中闰年的判断及打印了1000-2000年中的闰年
  10. 采用计算机制作文书的,计算机基础之w音ord案例-制作求职简历【应用文书例稿】.ppt...