本文实例讲述了PHP通过排列组合实现1到9数字相加都等于20的方法。分享给大家供大家参考。具体实现方法如下:
PHP;">
3+8+9 [1] => 4+7+9
测试效果:1:对于加数数组比较小的,速度可以,过大的话,有些慢;2:每次可以使用不同的加数的,处理会变慢
采用的方法是:生成所有可能排列,对排列处理过滤重复的,得到组合
*/
function huoqu_zhuhe($eq,$isone=1)
{if(empty($jiashu)||!is_array($jiashu)){echo 'error:加数必须数组';return false;}
$feishu=0;
for($i=0;$i$eq)break;
else if(($nowhe+$jiashu[$j])==$eq){
$savearr[]=$savestr;
}
else{$newarr[$k]=$savestr;$k++;}
}//end for($j=0;$j生成组合部分,过滤重复,2个数组以一个为参考,看另一个是否能通过移动达到匹配,可以,过滤
$isguolu=array();//存储对应的id的取舍 0取 1舍
for($i=0;$i
运行结果如下:
3+8+9
[1] => 4+7+9
[2] => 5+6+9
[3] => 5+7+8
[4] => 1+2+8+9
[5] => 1+3+7+9
[6] => 1+4+6+9
[7] => 1+4+7+8
[8] => 1+5+6+8
[9] => 2+3+6+9
[10] => 2+3+7+8
[11] => 2+4+5+9
[12] => 2+4+6+8
[13] => 2+5+6+7
[14] => 3+4+5+8
[15] => 3+4+6+7
[16] => 1+2+3+5+9
[17] => 1+2+3+6+8
[18] => 1+2+4+5+8
[19] => 1+2+4+6+7
[20] => 1+3+4+5+7
[21] => 2+3+4+5+6
)
希望本文所述对大家的PHP程序设计有所帮助。