PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能

这篇文章主要介绍了PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能,涉及php数据结构中图的遍历及全排列相关数学运算技巧,需要的朋友可以参考下。

本文实例讲述了PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能,分享给大家供大家参考,具体如下:

  1. <?php
  2. $n=$_REQUEST["n"];
  3. if($n>8)
  4. {
  5. echo "{$n}太大了,影响服务器性能";
  6. return;
  7. }
  8. define("N",$n);
  9. $d=array();
  10. $v=array();
  11. for($i=0;$i<=N;$i++){
  12. $d[$i]=$v[$i]=0;
  13. }
  14. function dfs($depth){
  15. global $d,$v;
  16. if($depth>=N){
  17. for($i=0;$i!=N;$i++){
  18. echo $d[$i];
  19. }
  20. echo "<br>";
  21. return;
  22. }
  23. for($i=1;$i<=N;$i++){
  24. if($v[$i]==0){
  25. $v[$i]=1;
  26. $d[$depth]=$i;
  27. dfs($depth+1);
  28. $v[$i]=0;
  29. }
  30. }
  31. }
  32. dfs(0);

这里以get方法传入参数n=4为例,输出如下:

  1. 1234
  2. 1243
  3. 1324
  4. 1342
  5. 1423
  6. 1432
  7. 2134
  8. 2143
  9. 2314
  10. 2341
  11. 2413
  12. 2431
  13. 3124
  14. 3142
  15. 3214
  16. 3241
  17. 3412
  18. 3421
  19. 4123
  20. 4132
  21. 4213
  22. 4231
  23. 4312
  24. 4321