gpt4 book ai didi

r - 从列表中获取总和为特定数字的所有数字组合

转载 作者:行者123 更新时间:2023-12-01 23:37:50 24 4
gpt4 key购买 nike

我有以下 list 数字 (1,3,4,5,7,9,10,12,15) 我想找出所有此 list3 数字的可能组合,总和为 20

我对 stackoverflow 的研究让我看到了这篇文章: Finding all possible combinations of numbers to reach a given sum

Mark提供的解决方案如下:

subset_sum = function(numbers,target,partial=0){
if(any(is.na(partial))) return()
s = sum(partial)
if(s == target) print(sprintf("sum(%s)=%s",paste(partial[-1],collapse="+"),target))
if(s > target) return()
for( i in seq_along(numbers)){
n = numbers[i]
remaining = numbers[(i+1):length(numbers)]
subset_sum(remaining,target,c(partial,n))
}
}

但是我很难尝试调整这组代码来匹配我的问题。或者可能有更简单的解决方案?

我希望 R 中的输出显示数字列表。

如有任何帮助,我们将不胜感激。

最佳答案

您可以使用combn 函数和过滤器来满足您的条件。我分两步执行了以下计算,但也可以一步执行。

v <-  c(1,3,4,5,7,9,10,12,15)
AllComb <- combn(v, 3) #generates all combination taking 3 at a time.
PossibleComb <- AllComb[,colSums(AllComb) == 20] #filter those with sum == 20

#Result: 6 sets of 3 numbers (column-wise)
PossibleComb
# [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] 1 1 1 3 3 4
# [2,] 4 7 9 5 7 7
# [3,] 15 12 10 12 10 9
#

# Result in list
split(PossibleComb, col(PossibleComb))

# $`1`
# [1] 1 4 15
#
# $`2`
# [1] 1 7 12
#
# $`3`
# [1] 1 9 10
#
# $`4`
# [1] 3 5 12
#
# $`5`
# [1] 3 7 10
#
# $`6`
# [1] 4 7 9

关于r - 从列表中获取总和为特定数字的所有数字组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50540342/

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