gpt4 book ai didi

php - 返回数组元素的最小组合以合计为一个数

转载 作者:搜寻专家 更新时间:2023-10-31 21:49:14 25 4
gpt4 key购买 nike

我有一个 $array和一个 $number ,我想找到 $array 的最小组合(元素数量最少)的元素,总和为 $number ,但我不知道如何使用 PHP 代码执行此操作。

测试用例:

$array = [
'a' => '1',
'b' => '3',
'c' => '5',
'd' => '5',
'e' => '1',
'f' => '2',
'g' => '2',
];

如果$number = 10 , 输出应该是 'c', 'd'

如果$number = 1 , 输出应该是 'a''e'

如果$number = 4 , 输出应该是 'a', 'b''b', 'e''f', 'g'

如果$number = 9输出应为 'a', 'b', 'c''a', 'b', 'd''c', 'f', 'g'等等

我怎样才能用代码写这个?

最佳答案

试试这个(并使用递归算法)

  <?php
$array= array("a"=>"1", "b"=>"3", "c"=>"5", "d"=>"5", "e"=>"1", "f"=>"2","g"=>"2");$num=6;
foreach ($array as $key => $value) {
if ($value==$num){
echo $key."=>".$value."<br>";
}
echo "-----------------"."<br>";
foreach( $array as $key1 => $value1) {
if($key1 > $key){
if(sumval($value,$value1)==$num){
echo $key."=>".$key1."<br>";
}
elseif(sumval($value,$value1)<$num){
$total=sumval($value,$value1);
foreach( $array as $key2 => $value2) {
if($key2 > $key1){
if(sumval($total,$value2)==$num){
echo $key."=>".$key1."=>".$key2."<br>";
}
}
}
}
}
}
}

function sumval($a,$b){
return $a+$b;
}

?>

关于php - 返回数组元素的最小组合以合计为一个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47225877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com