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

 更新时间:2017年11月10日 11:34:37   作者:幻世2012  
这篇文章主要介绍了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

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP中关键字interface和implements详解

    PHP中关键字interface和implements详解

    PHP 类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此 PHP 引入了类的接口技术。下面这篇文章主要跟大家介绍了关于PHP中关键字interface和implements的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-06-06
  • 让Json更懂中文(JSON_UNESCAPED_UNICODE)

    让Json更懂中文(JSON_UNESCAPED_UNICODE)

    我们知道, 用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式, 还会在一定程度上增加传输的数据量.
    2011-10-10
  • 探讨:如何通过stats命令分析Memcached的内部状态

    探讨:如何通过stats命令分析Memcached的内部状态

    本篇文章是对通过stats命令分析Memcached的内部状态进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP中$GLOBALS与global的区别详解

    PHP中$GLOBALS与global的区别详解

    今天小编就为大家分享一篇关于PHP中$GLOBALS与global的区别详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • php 生成短网址原理及代码

    php 生成短网址原理及代码

    将原网址做crc32校验,得到校验码,使用sprintf将校验码转为无符号数字,详细步骤请看本文
    2014-01-01
  • php生成固定长度纯数字编码的方法

    php生成固定长度纯数字编码的方法

    这篇文章主要介绍了php生成固定长度纯数字编码的方法,涉及php字符串与数组的相关操作技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07
  • PHP反射实际应用示例

    PHP反射实际应用示例

    这篇文章主要介绍了PHP反射实际应用,结合实例形式分析了php使用反射实现自动生成文档、实现MVC架构、实现单元测试等具体应用操作技巧,需要的朋友可以参考下
    2019-04-04
  • 使用git迁移Laravel项目至新开发环境的步骤详解

    使用git迁移Laravel项目至新开发环境的步骤详解

    这篇文章主要介绍了迁移Laravel项目至新开发环境的步骤详解,需要的朋友可以参考下
    2020-04-04
  • php简单获取复选框值的方法

    php简单获取复选框值的方法

    这篇文章主要介绍了php简单获取复选框值的方法,简单分析了php以数组形式传递复选框checkbox值的实现方法,需要的朋友可以参考下
    2016-05-05
  • PHP中header用法小结

    PHP中header用法小结

    这篇文章主要介绍了PHP中header用法,总结分析了header函数的基本功能与相应的使用技巧,需要的朋友可以参考下
    2016-05-05

最新评论