当前位置: 首页 > 编程笔记 >

浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)

奚无尘
2023-03-14
本文向大家介绍浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合),包括了浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)的使用技巧和注意事项,需要的朋友参考一下

实例如下:

<?php
/*分治法——直接选择
比如说a b c
首先将a之后的字符依次与a进行交换
1 b,a,c
2 c,b,a
注意这里少了一个原始数据 a,b,c。需要把原始数据也算如排列中
3 a,b,c

然后把字符移到第二个位置,将第二个位置之后的数分别与第二个位置的数进行交换
1 b,a,c ===> 11 b,c,a
2 c,b,a ===> 21 c,a,b
3 a,b,c ===> 31 a,c,b

**/
function zuhe($arr,$begin){
  if(!is_array($arr)) return ;
  $N = count($arr);
  if($begin == $N-1 || $begin >$N || $begin <0) return ;
  if($begin == 0){
    print_r($arr);//输出原始数据
    echo '</br>';
  } 
  //循环将初始值与第i个值交换后进行组合
  for($i = $begin;$i < $N;$i++){

    $t = $arr[$begin];
    $arr[$begin] = $arr[$i];
    $arr[$i] = $t;

    if($i!==$begin){//i==begin时的数已经输出过
      print_r($arr);
      echo '</br>';
    }
    zuhe($arr,$begin+1);  
    $t = $arr[$begin];
    $arr[$begin] = $arr[$i];
    $arr[$i] = $t;

  }
}

$arr = array('a','b','c','d');
//zuhe($arr,0);


/*分治法——直接插入
初始时从0个元素开始,输出初始序列,为组合的一个序列
当在来一个元素时只需将该元素放在该元素之前的元素组的不同的位置即组成了不同的排列
如已有元素组为a,b.新元素为c,把c分别与a,b进行交换即可(a,c,b);(c,b,a),在现有的排列上在新增元素
重复执行以上步骤
*/
function zuhe2($arr,$begin){
  if($begin==0) {
    print_r($arr);
    echo "</br>";
    //zuhe2($arr,$begin+1);
  }
  if($begin >= count($arr)) return ;
  zuhe2($arr,$begin+1);//begin时的排列上一次已产生,直接新增元素
  for($i = $begin-1;$i>=0;$i--){
    $t = $arr[$begin];
    $arr[$begin] = $arr[$i];
    $arr[$i] = $t;
    print_r($arr);
    echo "</br>";
    zuhe2($arr,$begin +1);
    $t = $arr[$begin];
    $arr[$begin] = $arr[$i];
    $arr[$i] = $t;
  }
}

以上这篇浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍PHP输出多个元素的排列或组合的方法,包括了PHP输出多个元素的排列或组合的方法的使用技巧和注意事项,需要的朋友参考一下 实例如下: 共15种排列结果。 以上这篇PHP输出多个元素的排列或组合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍浅谈C++对象组合,包括了浅谈C++对象组合的使用技巧和注意事项,需要的朋友参考一下 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 问题内容: 我有一个问题困扰了一段时间(头冷也无济于事!),基本上我有一个PHP数组,看起来像下面的例子: 而且我希望能够由此生成一个表格,其中包含这些表格的所有可能组合,但无需重复任何组合(无论其位置如何),因此例如 但是我希望它能够处理尽可能多的不同数组。 问题答案: 这称为“笛卡尔积”,数组http://php.net/manual/en/ref.array.php上的php手册页显示了一些

  • 我想基于现有列中的值在我的数据框架中创建一个新列。新列的输入应为。目前,我正在尝试以下方法: 当我尝试这样做时,我得到一个ValueError,说明如下: ValueError:序列的真值不明确。使用a.empty,a.bool(), 还有别的办法吗? 我的预期输出将是由以下值组成的列:

  • 大家好,我对C编码很陌生,但我正在学习这门课程。 我想写一段代码,找出数组中r个元素的组合,然后对结果进行置换。 我已经能够从各种来源进行研究,并有单独的代码,将打印组合和排列的数组。 我面临的挑战是如何将两个代码结合起来并使其作为一个整体工作。 第一个代码用于 5 个元素数组的组合,其中一次选择 4 个元素。 第二个代码是排列数组组合(前一个代码)的每个结果,这意味着4个元素的排列。在下面的这段

  • 本文向大家介绍浅谈python的输入输出,注释,基本数据类型,包括了浅谈python的输入输出,注释,基本数据类型的使用技巧和注意事项,需要的朋友参考一下 1.输入与输出 python中输入与输出函数为:print、input help() 帮助的使用:help() 注意: 编写时数字不能写在最前面,但是可以写在后面 a1可以1a不可以。 编写要求:标点符号必须为英文字符,引号内可以键入中文字符。