PHP全排列算法实现程序代码_PHP教程

php中文网
发布: 2016-07-13 10:09:52
原创
1469人浏览过

php排列算法实现程序代码

   从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

  简介

  如1,2,3三个元素的全排列为:

  1,2,3

  1,3,2

Robovision AI
Robovision AI

一个强大的视觉AI管理平台

Robovision AI 65
查看详情 Robovision AI

立即学习PHP免费学习笔记(深入)”;

  2,1,3

  2,3,1

  3,1,2

  3,2,1

  共3*2*1=6种 3!

  2公式

  全排列数f(n)=n!(定义0!=1)

  递归算法

  1,2,3

  1,3,2

立即学习PHP免费学习笔记(深入)”;

  2,1,3

  2,3,1

  3,2,1

  3,1,2

  这是由于算法只是考虑到了如何输出全排列,而没有考虑到换位是否有问题。所以我提出了解决方案,就是换位函数修改下

  如 1 2 3 换位的话 ,不应该直接 3 2 1这样 ,让3和1直接换位; 而是让3排在最前后 ,1 2 依次向后

  基本算法

  以下介绍全排列算法四种:

  (A)字典序法

  (B)递增进位制数法

  (C)递减进位制数法

  (D)邻位对换法

  实现全排列算法

代码如下  

header("content-type:text/html;charset=utf-8");/**
* @param array $a 待排列的元素集合,会动态变化
* @param array $b 储存当前排列
* @param array $M 待排列的元素集合,相当于一个常量,始终为初始待排列的元素集合
*/
function wholerange($a,$b,$M){
$range=array();
if(count($a) > 1){
$d=$b;
foreach($a as $value){
$b[]=$value;
$c=array_diff($M,$b);
if(count($c) > 0){
$range[]=wholerange($c,$b,$M);
}
$b=$d;
}
}elseif(count($a) == 1){
foreach($a as $value){
$b[]=$value;
}
$onerange="";
foreach($b as $value){
$onerange.=$value;
}
$range[]=$onerange;
}
return $range;
}
/**
* 递归输出数组
*
* @param array $arr 待输出的数组
* @return int 返回数组元素个数*/
function recursionarray($arr){
$i=0;
foreach($arr as $value){
if(is_array($value)){
$i+=recursionarray($value);
}else{
echo $value."
";
$i++;
}
}
return $i;
}
$a=array('A','B','C','D');
$b=array();
$range=wholerange($a,$b,$a);
$count=recursionarray($range);
echo "总共有".$count."排列";
?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/941716.htmlTechArticlePHP全排列算法实现程序代码 从n个不同元素中任取m(mn)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当...
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号