求一个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
.....
求函数输出所有组合
如描述不清楚,可以补充。 展开
需要得到的内容,
循环计算出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
.....
求函数输出所有组合
如描述不清楚,可以补充。 展开
2个回答
展开全部
//初始化
$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位数,或者更多位。
展开全部
<?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>';
}
}
?>
算得不好 求采纳~
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询