Как найти все возможные k целых чисел, сумма которых равна некоторому числу в R
предположим, у меня есть целое числоn
а такжеk
Мне нужно найти все возможные комбинацииk
целые числа, которые в суммеn
, Мне было интересно, как я могу реализовать это эффективно.
сейчас то, что я делаю, очень медленно, я создалkth
декартово произведение последовательности от 1 до n. А затем переберите все возможные комбинации, чтобы проверить, удовлетворяет ли она сумме. Ниже приведен мой код.
сначала получить k декартово произведение
cart = function(v,k){
x = v
f = v
for(i in 1:(k-1)){
f = merge(f,x,all=T)
f = as.matrix(f)
colnames(f) = NULL
}
return(f)
}
v - последовательность от 1 до n, а k - целое число.
затем зациклиться
combine = cart(v=seq(1,n),k=k)
sum = 0
for(i in 1:dim(combine)[1]){
if(sum(combine[i,])==n){
sum = sum + sum(combine[i,])
}
}
это очень медленно, и мне было интересно, есть ли более быстрый способ реализовать это?