求一个一维数组内部元素的所有可能的组合的算法?用php实现
比如有这样一个一维数组:$words=array('php','mysql','html','css');我想要得到这个数组的内部的元素的所有可能的组合。比如:php,m...
比如有这样一个一维数组:$words=array('php','mysql','html','css');
我想要得到这个数组的内部的元素的所有可能的组合。
比如:php,mysql php,html mysql,html html,css mysql,css 等等,当然还有三个元素组在一起的组合,排除只有一个元素的组合。 展开
我想要得到这个数组的内部的元素的所有可能的组合。
比如:php,mysql php,html mysql,html html,css mysql,css 等等,当然还有三个元素组在一起的组合,排除只有一个元素的组合。 展开
1个回答
2016-06-27
展开全部
原理相当的简单,就是依次向盘子里面放abc三种水果,后面一个在前面的一堆方法基础上再依次的放,放一个盘的时候有3种放法,两个盘的时候有3*3种放法,三个盘的时候是3*3*3种放法,所以最后总数是3的5次方,也就是有243个组合。下面的代码就是体现出这种逻辑。
<?php
$fruit=array('a','b','c');
$dishes[]=range(1,5);
for($i=0;$i<5;$i++){
foreach($dishes as $k=>$v){
foreach($fruit as $_fruit){
$v[$i]=$_fruit;
$dishes[]=$v;
}
unset($dishes[$k]);
}
}
$dishes=array_values($dishes);
foreach($dishes as $k=>$v)
echo $k+1,':',implode('',$v),'<br>';
?>
<?php
$fruit=array('a','b','c');
$dishes[]=range(1,5);
for($i=0;$i<5;$i++){
foreach($dishes as $k=>$v){
foreach($fruit as $_fruit){
$v[$i]=$_fruit;
$dishes[]=$v;
}
unset($dishes[$k]);
}
}
$dishes=array_values($dishes);
foreach($dishes as $k=>$v)
echo $k+1,':',implode('',$v),'<br>';
?>
追问
你这个答非所问,你的意思是说说abc之间任意组合能组合到243种组合吗?完全不是我想要的结果,abc之间组合只能有 a b c ab ac bc abc 这7种,不考虑元素顺序,元素相同,顺序不同的都只算一种。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询