31个,是4个不同数字(从1到18)的总和

时间:2019-03-16 06:18:42

标签: combinations

从总和为31的A = {1,2,3,4,..,18}中选择4个不同数字的方式数目。

我知道多项式定理的组合,但是在这里我们想要不同的编号。 如何消除重复2或3个号码的方法。

1 个答案:

答案 0 :(得分:0)

由于您没有标记语言,

我会在php中做类似的事情,

 $set = [];
$combinations = [[]];
$length = 4;
$sum_value = 18; 
for($i = 0; $i < $length; $i++){
    $set[] = range(1, $sum_value);
}
for ($i = 0; $i < $length; $i++) {
    $tmp = [];
    foreach ($combinations as $v1) {
        foreach ($set[$i] as $v2)
            $tmp[] = array_merge($v1, [$v2]);
    }
    $combinations = $tmp;
}
$result=[];
foreach ($combinations as $c) {
    if(count($c) == count(array_unique($c)))
        if(array_sum($c) == $sum_value)
        {
            $result[]=$c;
        }
}
echo 'Total '.count($result).' combinations of length '.$length.' for sum = '. $sum_value; 
//print_r($result);