用php实现的排列组合算法。使用递归算法,效率低,胜在简单易懂。可对付元素不多的情况。

//从$input数组中取$m个数的组合算法
function comb($input, $m)
{
if($m==1)
{
foreach($input as $item)
{
$result[]=array($item);
}
return $result;
}
for($i=0;$i<=count($input)-$m;$i++)
{
$nextinput=array_slice($input,$i+1);
$nextresult=comb($nextinput,$m-1);
foreach($nextresult as $one)
{
$result[]=array_merge(array($input[$i]),$one);
}
}
return $result;
} //从$input数组中取$m个数的排列算法
function perm($input,$m)
{
if($m==1)
{
foreach($input as $item)
{
$result[]=array($item);
}
return $result;
}
for($i=0;$i<count($input);$i++)
{
$nextinput=array_merge(array_slice($input,0,$i),array_slice($input,$i+1));
$nextresult=perm($nextinput,$m-1);
foreach($nextresult as $one)
{
$result[]=array_merge(array($input[$i]),$one);
}
}
return $result;
} $input=array(1,2,3,4,5);
print_r(comb($input,3));
print_r(perm($input,3));

  

排列组合算法(PHP)的更多相关文章

  1. C#语法灵活运用之排列组合算法

    今天群里有朋友求一个排列组合算法,题目是给定长度,输出所有指定字母的组合. 如指定字母a.b.c.d.e.f,长度为2,则结果应为:aa.ab.ac ... ef.ff. 有朋友给出算法,很有特色: ...

  2. python实现高效率的排列组合算法-乾颐堂

    组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组 ...

  3. 排列组合算法的javascript实现

    命题:从成员数为N的集合S中,选出M个元素,分别求其排列与组合结果集,即 A(N, M)与C(N, M) js解法: function queue(arr, size){ if(size > a ...

  4. 排列组合算法(基于c++实现)

    排列 全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个.现以{1, 2, 3}为例说明如何编写全排列的递归算法 第一层S1表示第一个数分别与第1.2.3个数交换位置,如123 ...

  5. c语言中一种典型的排列组合算法

    c语言中的全排列算法和组合数算法在实际问题中应用非常之广,但算法有许许多多,而我个人认为方法不必记太多,最好只记熟一种即可,一招鲜亦可吃遍天 全排列: #include<stdio.h> ...

  6. 针对较大基数的排列组合算法Java实现类(n选m)

    package com.utils; import java.math.BigDecimal; import java.math.RoundingMode; public class PLZUUtil ...

  7. C(n,m)排列组合算法

    主要解决C(n,m)问题 static class Extension { public static IList<IList<T>> GetGroup<T>(th ...

  8. 排列组合算法的Java实现

    转载于:http://cgs1999.iteye.com/blog/2327664

  9. N个数组中所有元素的排列组合(笛卡尔积)算法

    (1)N个数组对象中所有元素排列组合算法 private List<List<Object>> combineAlg(List<Object[]> nArray) ...

随机推荐

  1. hdu5442 Favorite Donut

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5442 题目大意:给你一个长度为n的字符串,将它首尾相连成环.问你这个环上找一个长度为n的字典序最大的串 ...

  2. 把cmd信息中的正常和异常输出分别输出到不同txt文件中

    场景一: 1.大量滚动信息容纳不下,在小黑屏中被冲刷掉. 2.希望把正常输出和异常输出分别输出到不同地方. 相关命令 一共有4个输出到文件的命令,现以jar命令打war包举例说明: 命令 说明 举例  ...

  3. Java基础---MD5和BASE64

    package cn.peter; import sun.misc.BASE64Encoder; import java.io.UnsupportedEncodingException; import ...

  4. 利用JDK(1.6及以上版本)创建WebService

    一.什么是WebService WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络 ...

  5. IOS TableView 去除点击后产生的灰色背景

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPa ...

  6. 经典的找不到符号(symbol)错误 #iOS开发

    使用BmobSDK的过程中,编译时出现了以下错误信息,意思是 -[BmobSRWebSocket _innerPumpScanner] 这个方法引用了 "_utf8_nextCharSafe ...

  7. java验证码刷新

    可以使用a标签,这样省事 <img id="code_img" src="validcode" alt="登录验证码" /> & ...

  8. iScroll-5 API 中文版

    http://wiki.jikexueyuan.com/project/iscroll-5/ http://www.mamicode.com/info-detail-331827.html IScro ...

  9. C# winform key value型数据如何绑定ComBox (hashtable,keyvaluepair,dictionary )

    cbUserAgent是一个combox ArrayList list = new ArrayList(); Dictionary<string, string> useragents = ...

  10. 《VB语言程序设计(第3版)》总结

    我之前因学习昆仑通态的组态软件MCGS,用并学习过VB,还买了一本书<VB语言程序设计(第3版)>.现在在某公司实习,最近接触老的项目,又要用到VB.我就又把那本书大体看了一遍,并对其进行 ...