用全排列的方法解决八皇后问题
用百度搜索八皇后问题,几乎清一色都是用回溯,有兴趣的同学可参考:从全排列和八皇后问题谈回溯。
解决一个问题,我们应该充分利用已有的条件,化繁为简。
$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);
用全排列的方法解决八皇后问题相关推荐
- 运用全排列的方法解决八皇后问题
运用全排列的方法解决八皇后问题,可以分为两部分:全排列和八皇后,下面我将分开说明两个步骤. 首先说明八皇后: 第一步:就是把皇后按照0到8编号,然后对八个皇后进行全排列,一共有40320种排列方式. ...
- 回溯法在解决八皇后问题中的应用
回溯法:有这样一类题目,它们要求在相对问题的输入规模按照指数速度增长(或者更快)的域中,找出一个具有指定特性的元素.例如:在图顶点的所有排列中求一个哈密顿回路,在背包问题的一个实例中求其中最有价值的物 ...
- 遗传算法解决八皇后问题
遗传算法解决八皇后问题 程序设计的概要思想 编码方案 适应度的计算 初始种群 选择算子 交叉算子 变异算子 终止策略 程序的主要函数及其作用 运行结果截图 Python源代码 程序设计的概要思想 遗传 ...
- 遗传算法解决八皇后问题(java源码)
本文源码下载链接:https://download.csdn.net/download/goulvjiang3176/11221063 另有贪心算法解决八皇后问题的源码下载链接:https://dow ...
- 用lua解决八皇后问题
要解决八皇后问题,首先必须认识到每一行中只能有一个皇后.因此,可以用一个由8个数字组成的简单数组来表示可能的解决方案.例如,数组{3,7,2,1,8,6,5,4}表示皇后在棋盘中的位置分别是( ...
- Python:各种算法解决八皇后问题
文章目录 1 八皇后问题 2 解决方案 3 性能对比 4 总结 1 八皇后问题 问题:有一个8乘8的棋盘,现在要将八个皇后放到棋盘上,满足:对于每一个皇后,在自己所在的行.列.两个对角线都没有其他皇后 ...
- Python解决八皇后问题
Python解决八皇后问题 参考文章: (1)Python解决八皇后问题 (2)https://www.cnblogs.com/littleseven/p/5362791.html 备忘一下.
- 回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案
回溯算法解决八皇后 4-皇后问题 (4 - Queen's problem) In 4- queens problem, we have 4 queens to be placed on a 4*4 ...
- Python:爬山法/随机重启爬山法/允许侧移的爬山法解决八皇后问题
文章目录 1 八皇后问题 2 程序代码 2.1 程序1 2.2 程序2 2.3 程序3 2.3.1 爬山法 2.3.2 随机重启爬山法 2.3.3 允许皇后侧移的爬山法 3 评价 1 八皇后问题 有一 ...
最新文章
- Data - 数据思维 - 中篇
- Docker应用:Kubernetes(容器集群)
- 一行代码:你的纯文本秒变Markdown
- 作弊阴影罩棋盘,人工智能咋避嫌?
- w3wp trace文件Debug
- map mybatis 的字段返回0_Mybatis 你踩过坑吗?
- Django从理论到实战(part47)--ListView类
- 实验大作业c语言实现简单ftp,C 语言实现 FTP 服务器
- Telnet和FTP
- git tag打标签常用命令
- 新网域名服务故障的N种可能
- 十大笔记本电脑排行_2020双十一,十大高性价比游戏笔记本电脑值得买排行榜之搭载144Hz电竞屏机型(配置推荐)福利放送...
- C 线程同步的四种方式(Linux)
- Unity3d 周分享(11期 2019.2.16)
- 基于WEKA实现时间序列的预测
- 深度学习已入末路,AI未来是图网络
- blender2.8 使用RetopoFlow拓扑手臂护腕 (灵活使用Contours)
- 《数字逻辑与计算机设计基础》
- Java实现简单的数字雨
- 氢化溶血卵磷脂行业研究分析
热门文章
- 快速翻译维多利亚写作体裁作品
- java-php-net-python-金拱门自动订餐系统报告计算机毕业设计程序
- 男人,请把哄的时间延长些
- capesandbox模拟登录案例
- 安装了xp和vista两个版本后,删除vista系统
- alertdialog 自定义样式回调选手_日志MIUI 10 9.8.7 内测更新资讯 小米8自定义水印...
- CoreDraw-X4X5X6-Win10菜单栏异常问题
- 吃掉脂肪,狂减33斤!午餐菜单一次性公开!
- C语言中闰年的判断及打印了1000-2000年中的闰年
- 采用计算机制作文书的,计算机基础之w音ord案例-制作求职简历【应用文书例稿】.ppt...