【发布时间】:2026-01-08 04:45:01
【问题描述】:
我正在尝试不同的值组合的算法将能够给出我精确或近似的输出值总和
我已附上详细说明的图片,我创建了列总计作为每行值的总和,最后我将所有的总值相加,整个总和值将是我的预期输出值。
所以我试图将每一行的总和组合起来,并希望得到总和值
我的算法我在下面的谷歌搜索过
function extractList($array, &$list, $temp = array()) {
if (count($temp) > 0 && ! in_array($temp, $list))
$list[] = $temp;
for($i = 0; $i < sizeof($array); $i ++) {
$copy = $array;
$elem = array_splice($copy, $i, 1);
if (sizeof($copy) > 0) {
$add = array_merge($temp, array($elem[0]));
sort($add);
extractList($copy, $list, $add);
} else {
$add = array_merge($temp, array($elem[0]));
sort($add);
if (! in_array($temp, $list)) {
$list[] = $add;
}
}
}
}
echo "<pre>";
$sum = 32 ; //SUM
$array = array(5.14327,5.72355,5.91794,4.8209,8.69933,4.12977,4.12977,2.92791,2.36829,2.21819,1.33759,1.72278,1.72278,0.589,1.06405,0.6387,0.6387,1.68995,2.51669,3.97842,2.38058,2.17175,4.88264,5.84811,6.14215);
$list = array();
# Extract All Unique Conbinations
extractList($array, $list);
#Filter By SUM = $sum
$list = array_filter($list,function($var) use ($sum) { return(array_sum($var) == $sum);});
#Return Output
print_r($list);
【问题讨论】:
-
你的图片没有多大意义,绿色列不包含行总和。
-
你要回应吗?