0

有这样一个数组;

$arrar = [1,3,4,7,12];

现在想求他任意三个值相加是否=10 并且另外两个值相加也是否等于10

没有思路 咋写呢?
数组的值是可变的

Loveyou 26
2019-05-07 提问
2 个回答
0

已采纳
$data = [1,3,4,7,12];
$num = 0;
//取第一个数
$array = $data;
foreach ($data as $key => $val) {
    //取第二个数
    unset($array[$key]);
    $arr = $array;
    foreach ($array as $k => $v) {
        //取第三个数
        unset($arr[$k]);
        foreach ($arr as $i => $item) {
            $three = array(
                $key => $val,
                $k => $v,
                $i => $item,
            );
            $two = array_diff($data, $three);
            sort($two);
            echo '当前组合(3):' . $val . '+' . $v . '+' . $item . '=' . array_sum($three) . '; ';
            echo '(2):' . $two[0] . '+' . $two[1] . '=' . array_sum($two) . ';<br>';
            if (array_sum($three) == 10 || array_sum($two) == 10) {
                //逻辑
            }
            $num += 1;
        }
    }
}
echo '组合数:' . $num . ' 种';

输出:
当前组合(3):1+3+4=8; (2):7+12=19;
当前组合(3):1+3+7=11; (2):4+12=16;
当前组合(3):1+3+12=16; (2):4+7=11;
当前组合(3):1+4+7=12; (2):3+12=15;
当前组合(3):1+4+12=17; (2):3+7=10;
当前组合(3):1+7+12=20; (2):3+4=7;
当前组合(3):3+4+7=14; (2):1+12=13;
当前组合(3):3+4+12=19; (2):1+7=8;
当前组合(3):3+7+12=22; (2):1+4=5;
当前组合(3):4+7+12=23; (2):1+3=4;
组合数:10 种

1

1、先计算 取三个有多少组合,放入数组,
2、计算 三个值相加是否=10,若是进入3
3、另外两个值相加也是否等于10

撰写答案

推广链接