有6桶酒, 质量分别是30L, 32L, 36L, 38L, 40L, 62L; 其中1桶是红酒, 其余是白酒; 这5桶白酒, 其中2桶的体积之和=另外3桶体积之和的一半. 求红酒体积.
2019年1月15日写的程序如下
for ($b = 0; $b <= 5; $b++) {
for ($c = 0; $c <= 3; $c++) {
for ($d = 4; $d >= $c + 1; $d--) {
$a = [30, 32, 36, 38, 40, 62];
$g = $a[$b];
unset($a[$b]);
sort($a);
$f = $a[$c] + $a[$d];
$h = $a[$c];
$i = $a[$d];
unset($a[$c]);
unset($a[$d]);
sort($a);
$e = ($a[0] + $a[1] + $a[2]) / 2;
if ($f == $e) {
echo '匹配成功,红酒体积:' . $g . '<br>';
echo "计算:{$h}+{$i}=({$a[0]}+{$a[1]} + {$a[2]})/2";
}
}
}
}
2019-5-21, 写的程序如下
$arr = [30, 32, 36, 38, 40, 62];
for ($i = 0; $i < 6; $i++) {
$arr_tmp = $arr; //备份数组
$red_tmp = $arr[$i]; //确定一个红酒
unset($arr_tmp[$i]); //搞掉一个元素
$total = 30 + 32 + 36 + 38 + 40 + 62 - $red_tmp; //白酒质量总和
$arr_tmp = array_values($arr_tmp); //清空键名
for ($m = 0; $m < 4; $m++) {
for ($n = $m + 1; $n < 5; $n++) {
if ($arr_tmp[$m] + $arr_tmp[$n] == $total / 3) {
echo '红酒质量:' . $red_tmp;
}
}
}
}
2023-9-20, 写的程序如下:
<?php
$arr = [30, 32, 36, 38, 40, 62];
while (1) {
shuffle($arr);
if ($arr[0] + $arr[1] === ($arr[2] + $arr[3] + $arr[4]) / 2)
break;
}
echo "红就体积是:" . $arr[5];