PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
这篇文章主要介绍了PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能,涉及php数据结构中图的遍历及全排列相关数学运算技巧,需要的朋友可以参考下。
本文实例讲述了PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能,分享给大家供大家参考,具体如下:
- <?php
- $n=$_REQUEST["n"];
- if($n>8)
- {
- echo "{$n}太大了,影响服务器性能";
- return;
- }
- define("N",$n);
- $d=array();
- $v=array();
- for($i=0;$i<=N;$i++){
- $d[$i]=$v[$i]=0;
- }
- function dfs($depth){
- global $d,$v;
- if($depth>=N){
- for($i=0;$i!=N;$i++){
- echo $d[$i];
- }
- echo "<br>";
- return;
- }
- for($i=1;$i<=N;$i++){
- if($v[$i]==0){
- $v[$i]=1;
- $d[$depth]=$i;
- dfs($depth+1);
- $v[$i]=0;
- }
- }
- }
- dfs(0);
这里以get方法传入参数n=4为例,输出如下:
- 1234
- 1243
- 1324
- 1342
- 1423
- 1432
- 2134
- 2143
- 2314
- 2341
- 2413
- 2431
- 3124
- 3142
- 3214
- 3241
- 3412
- 3421
- 4123
- 4132
- 4213
- 4231
- 4312
- 4321