n个数字选出m个求出所有的组合情况
2017-10-16 21:41
267 查看
有两种方法,一种是递归的
递归:数组中的第i个数,可以出现在组合中,后面的数挑选组合中剩下个数的数;也可以不要这个数,后面的数中挑选组合中的数.
<?php
$array=array(1,2,3,4,5);
$m=0;
$n=2;
$k=$n;
$arr=array();
find($array,$m,$n,$arr,$k);
function find($array,$m,$n,$arr,$k){
if($n!=0&&count($array)-$m>=$n){
//print $array[$m];
$arr[$n]=$array[$m];
find($array,$m+1,$n-1,$arr,$k);
if(count($array)-$m-1>=$n){
//print $m."haha\n";
find($array,$m+1,$n,$arr,$k);
}
}
else{
for($i=1;$i<$k+1;$i++){
print $arr[$i];
}
print "\n";
}
递归:数组中的第i个数,可以出现在组合中,后面的数挑选组合中剩下个数的数;也可以不要这个数,后面的数中挑选组合中的数.
<?php
$array=array(1,2,3,4,5);
$m=0;
$n=2;
$k=$n;
$arr=array();
find($array,$m,$n,$arr,$k);
function find($array,$m,$n,$arr,$k){
if($n!=0&&count($array)-$m>=$n){
//print $array[$m];
$arr[$n]=$array[$m];
find($array,$m+1,$n-1,$arr,$k);
if(count($array)-$m-1>=$n){
//print $m."haha\n";
find($array,$m+1,$n,$arr,$k);
}
}
else{
for($i=1;$i<$k+1;$i++){
print $arr[$i];
}
print "\n";
}
相关文章推荐
- 数组中数字的所有组合情况
- 输出N个数中取M个数的所有组合,排列情况
- 任意数字、字符序列,输出它们所有的排列组合
- 找出数字所有组合序列
- 【Java中 任意几个数字获取其所有的排列组合】
- 算法:给定多个数字,把多个数字任意组合,选出组合后最大的数
- [sprc_lcl(cool一生) ]先生的一段代码:从n个数字中取m个数的所有组合
- python--求参赛两队所有可能的比赛组合情况
- for循环的小练习之6个不重复数字的所有组合输出
- 【Java中 任意几个数字获取其所有的排列组合】
- for循环的小练习之6个不重复数字的所有组合输出
- 从四个数字中选出三个,一共有多少组合?不重复的
- pinyin4j把中文句子(含有多音字字母)转成拼音(二维数组递归求所有组合情况返回list)算法实现!
- Python实现在给定整数序列中找到和为100的所有数字组合
- 有一串数字,A、B两个人分别依次从两端取一个数,直到取完所有数,取得和最大者胜利;A、B都使用最优策略的情况下,求A、B最终的和;
- for循环的小练习之6个不重复数字的所有组合输出
- 14.从m个球中取出n个球的所有组合情况
- 写打印从0~9之间选出2个数的所有组合
- 给定2个数字,n,m,使得从1到n之间的数字组合,他们的和等于m,求所有组合
- 【leetcode】31. Next Permutation 数字序列的所有组合中比给定串大的下一个最小的串