不用迭代的排列组合PHP代码

1290阅读 0评论2018-04-04 lsstarboy
分类:PHP

本例为2X2,3X3,4X4之类的排列

点击(此处)折叠或打开

  1. <?php

  2.   define( "N" ,3);
  3.   $arr = array( 'a','b','c','d','e','f','g','h','i','j');

  4.   $out = g( N );
  5.   var_dump( $out );

  6.   function g( $n = 4, $o = '' ){
  7.           global $arr;

  8.           $temp = array();
  9.           for( $i=0; $i<$n; $i++ ){

  10.                   if( $i == 0 ) {
  11.                           $temp = j($o);
  12.                           continue;
  13.                   }

  14.                   $temp2 = array();
  15.                   foreach( $temp as $k=>$v ){
  16.                           //由于j返回的是一个数组,如果直接用$temp3[]=j($v),则$temp3成了二维数组
  17.                           $temp2 = array_merge( $temp2, j( $v ));
  18.                   }
  19.                   $temp = $temp2;
  20.           }

  21.           return $temp;
  22.   }

  23.   function a( $o ){
  24.           global $arr;

  25.           $arr_temp = array();
  26.           for( $j=0; $j<N; $j++){
  27.                   $arr_temp[ $j ] = $o.$arr[ $j ];
  28.           }

  29.           return $arr_temp;
  30.   }

  31.   function j( $o ){
  32.           global $arr;

  33.           $arr_temp = array();
  34.           for( $j=0; $j<N; $j++){
  35.                   if( strpos( $o, $arr[ $j ] ) === false ) $arr_temp[ $j ] = $o.$arr[ $j ];
  36.           }

  37.           return $arr_temp;
  38.   }



  39.   ?>

上一篇:FreeBSD中禁用IPv6
下一篇:如何阻止 Firefox 在未经我许可的情况下自动连接