本文实例讲述了PHP通过排列组合实现1到9数字相加都等于20的方法。分享给大家供大家参考。具体实现方法如下:
rush: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;$iNowhe=array_sum($arr);
//echo $Nowhe;
for($j=0;$j$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程序设计有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。