求一个php相加和值函数

$a=array("1,21,10,20,..");//这是一个数组,内容可变需要得到的内容,循环计算出0-9之间3位数字相加和值,等于上面数组的元素,等于1的组合如下:... $a=array("1,21,10,20,..");//这是一个数组,内容可变
需要得到的内容,
循环计算出0-9之间3位数字相加和值,等于上面数组的元素,
等于1的组合如下:
0+0+1
1+0+0
0+1+0
等于21的组合有28种情况:
3+9+9
4+8+9
5+7+9
6+6+9
.....

求函数输出所有组合
如描述不清楚,可以补充。
展开
 我来答
苦瓜瓜仁
2016-09-14 · 超过35用户采纳过TA的回答
知道答主
回答量:87
采纳率:60%
帮助的人:45万
展开全部
//初始化
$seed = array(0,1,2,3,4,5,6,7,8,9);
$dict = array(); 
foreach($seed as $num1){ //构造字典
    foreach($seed as $num2){
        foreach($seed as $num3){
            $key = $num1."+".$num2."+".$num3; //等式
            $val = $num1+$num2+$num3;
            $dict[$key] = $val;
}}}

//计算部分
$a = array(1,21,99); //设定(输入)值
foreach($a as $item){
    $r = array_keys($dict,$item); //从字典中取出等式
    if($r){
        foreach($r as $result){
            echo "<br/>".$result."=".$item;
        }
    }else{ //没有等式成立
        echo "<br/>{$item}:no match";    
    }    
}
追问
能否把初始化foreach部分变成递归函数,因为这里可能是3位数相加,也有可能4位数,或者更多位。
yifenxinqin
2016-09-14 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:85
采纳率:100%
帮助的人:123万
展开全部
<?php
$array = [10, 20];
$end = false;
while(!$end){
$key = $array[0];
$arr = [];
for($i = 0; $i < 10; $i++){
for($ii = 0; $ii < 10; $ii++){
for($iii = 0; $iii < 10; $iii++){
if($i === 9 && $ii === 9 && $iii === 9){
unset($array[0]);
$array = array_values($array);
if(count($array) === 0){
$end = true;
break;
}
}
if($i + $ii + $iii === $array[0]){
$arr[$key][] = $i . ' + ' . $ii . ' + ' . $iii;
}
}
}
}
echo '等于 ' . $key . ' 的有 : </br>';
foreach($arr[$key] as $value){
echo $value . '</br>';
}
}
?>

算得不好  求采纳~

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式