我有这些清单
2级= 23
3级= 34
4级= 45
5级= 56
6级= 68
7级= 79
8级= 90
9级= 101
10级= 112
11级= 123
12级= 134
13级= 145
14级= 156
15级= 168
16级= 179
每个关卡的数字用于数组查找所有可能的数字组合以达到给定的集合
我的代码
index.html
<html>
<body>
<form method="post" action="compute.php">
Current:
<input type="number" name="number1" />
<input type="submit" name="submit" value="Compute">
</form>
</body>
</html>
compute.php
<?php
$number1 = $_POST['number1'];
$limit = 100000-$number1;
$array = array (23,34,45,56,68,79,90,101,112,123,134,145,156,168,179);
$array = array_filter($array, function($var) use ($limit) {
return ($var <= $limit);
});
rsort($array);
$num = count($array);
$total = pow(2, $num);
$out = array();
for ($i = 0; $i < $total; $i++) {
$comb = array();
for ($j = 0; $j < $num; $j++) {
// is bit $j set in $i?
if (pow(2, $j) & $i){
$comb[] = $array[$j];
}
}
if (array_sum($comb) == $limit)
{
$out[] = $comb;
}
}
array_multisort(array_map('count', $out), SORT_ASC, $out);
$out = array_unique($out, SORT_REGULAR);
$m = 1;
foreach($out as $result)
echo "<b>Possible Answer ". $m++. " : </b> " .implode(', ', $result)."
<br><br>";
?>
</div>
</div>
我的输入和输出
如果我输入99318
输出是这样的
可能的答案1:168,145,134,123,112
可能的答案2:168,156,134,123,101
可能的答案3:168、156、145、112、101
我的问题是我的代码无法找到组合数组,如果它的重复数字是这样的(112)
可能的答案:168、156、134、112、112
现在我很困惑如何查找和获取重复的数字
以及如何将单词“ Level 10”和“ exp”组合为结果并组合相同的子集(112)
可能的答案:15-168级,14-156级,10-134级,10(2x)-224级