gpt4 book ai didi

php - 检查一组数字中的数字 n 是否等于其子集的总和

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:25 24 4
gpt4 key购买 nike

我有一个数组:

$permissionVals = array (1,2,4,8,16,32);

和一个变量

$effectivePermission = 13;

我需要以优化的方式检查此变量是否等于给定数字数组的任何子集的总和。

子集和在这里似乎对我不起作用。谢谢

最佳答案

假设 $permissionVals 总是包含 2 的幂,您可以使用位比较:

$permissionVals = array(1,2,4,8,16,32);
$target = 13;
$res = array();

foreach ($permissionVals as $val) {
if ($target & $val) $res[] = $val;
}

if (array_sum($res) == $target)
print_r($res);
else
echo 'the message you want';

当达到总和时将停止 foreach 循环的变体。 (如果 $permissionVals 很大,则很有用):

$sum = 0;
$message = 'the message you want';

foreach ($permissionVals as $val) {
if ($target & $val) {
$res[] = $val;
$sum += $val;
}
if ($sum == $target) {
$message = '';
print_r($res);
break;
}
}

echo $message;

关于php - 检查一组数字中的数字 n 是否等于其子集的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22914772/

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