浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
作者:jingxian 发布时间:2024-05-03 15:53:12
标签:php,排列,组合
实例如下:
<?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;
}
}


猜你喜欢
- 本文实例讲述了Python网络编程之使用TCP方式传输文件操作。分享给大家供大家参考,具体如下:TCP文件下载器客户端需求:输入要下载的文件
- 本文实例讲述了Python 网络编程之TCP客户端/服务端功能。分享给大家供大家参考,具体如下:demo.py(TCP客户端):import
- 前言之前我们分享过用Python进行可视化的9种常见方式。其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Pyth
- 对于内容驱动的网站,设计好坏的关键是关系型数据库。在这个教程中,我们已经使用了MySQL关系型数据库管理系统(RDBMS)建立了我们的数据库
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML&nb
- 本文为大家分享了pygame游戏之旅的第14篇,供大家参考,具体内容如下添加icon需要用的函数是:gameIcon = pygame.im
- <input type=button value=刷新 onclick="window.location.reload()&
- 前言:处理字符串时经常要定制化去掉无用的空格,python 中要么用存在的常规方法,或者用正则处理1.去掉左边空格string = &quo
- 最近一直在研究python+selenium+beautifulsoup的爬虫,但是存入数据库还有写入txt文件里面的时候一直都是unico
- numpy打乱数组或打乱矩阵行使用numpy.random.shuffle函数,能够打乱ndarray对象的第一维度,对于数组来说,就是整体
- 我们可用正规表达式来寻找并替换URL和邮件地址为活动的超级链接。用到的主要函数就是InsertHyperlinks(inText),语法为:
- ''推拉门''动效也可以称作"手风琴"效果,大多数效果实现的思路基本是一样的,下面介绍两
- 本文实例讲述了Go语言写入字符串到文件的方法。分享给大家供大家参考。具体实现方法如下:package mainimport &q
- 第一种方法:这个是删除单字段图片的代码。比较简单,因为图片字段已经预先存在数据库表的bookpic的字段里面了。 代码如下: <!-
- 之前学习深度学习算法,都是使用网上现成的数据集,而且都有相应的代码。到了自己开始写论文做实验,用到自己的图像数据集的时候,才发现无从下手 ,
- 大家好,我又回来了。昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序。查了一下,发现只有windows上可
- 在开始我们今天的博客之前,我们需要先了解一下什么是滤波:首先我们看一下图像滤波的概念。图像滤波,即在尽量保留图像细节特征的条件下
- 目录1. 关联规则1.1 基本概念1.2 关联规则Apriori算法2. mlxtend实战关联规则2.1 安装2.2 简单的例子3. 总结
- 如下所示:# coding=utf-8import osimport os.pathimport reimport arrayimport
- 1. 什么是存储过程?存储过程是SQL server所提供的Tran