php 实现八皇后问题
2014-11-21 14:33
309 查看
php实现的八皇后问题,可以推广到N皇后
<?php class Empress{ private $queen;//存储位置,例如$queen[2] = 3表示第三行的第四列位置,行列从0计数 public static $count;//总共有多少种排列顺序 private $m;//规模数量 //设置几皇后,返回排列结果 public function getResult($m){ $this->m = $m; $this->put(0); } //判断第$n行放置位置$queen[$n] = $i 是否和前面的行冲突(同行,同列冲突,对角线冲突) /** * @param $n 第n行 * @return bool是否冲突 */ private function attack($n){ for ($i=0;$i<$n;$i++){ if($this->queen[$n] == $this->queen[$i] ||abs($this->queen[$n]-$this->queen[$i]) == abs($n-$i)){ return true; } } return false; } /** * * 打印函数 */ private function show(){ for ($i=0;$i<$this->m;$i++){ echo $this->queen[$i].'--'; } } /** * * 放置第n行的位置 */ private function put($n){ for ($i=0;$i<$this->m;$i++){ $this->queen[$n] = $i;//依次试探 $tmp_res = $this->attack($n); //如果没有冲突,要么继续放置下一行,要么到最后一行了。 if(!$tmp_res){ if($n==$this->m-1){ $this->show(); echo '第'.(self::$count+1).'种排列方法'; echo "<br/>"; self::$count++; }else{ $this->put($n+1); } } } } } class Client{ public static function main(){ $obj = new Empress(); $obj->getResult(4); } } Client::main(); ?>
相关文章推荐
- 八皇后问题的java 实现
- PHP网页服务实现注册和商店NPC管理(安装+搭建+使用+问题处理)
- PHP session的实现原理 大网站应用应注意的问题
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- 八皇后问题的实现
- 回溯法-八皇后问题之C实现
- 一个php session 实现的问题
- php的IMAP的应用实例(实现收发邮件、删除邮件、附件下载等功能,解决中文乱码问题)
- Python实现八皇后问题
- php优化及高效提速问题的实现方法第1/2页
- php实现汉诺塔问题(递归)
- 八皇后问题的C语言实现
- TP中的URL问题 index.php?action/method/key/value是如何实现的?
- 约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
- 八皇后问题的java实现
- 八皇后问题递归实现(C++)
- 约瑟夫环问题的 PHP 实现--使用 PHP 数组内部指针操作函数
- 对于php实现soap代理的一个常见问题:Class 'SoapClient' not found in PHP的处理方法
- 巧妙解决PHP无法实现多线程的问题