我有一個隨機正整數向量。我只想選擇那些總和恰好等于某個預定值的向量元素。
讓我們舉一個這樣的例子。
x=1:5,我正在尋找總和等于 的元素14。解決方案當然是 vector c(2, 3, 4, 5)。
當然,可能有幾種解決方案。示例 2.
x=1:5,我正在尋找總和等于 的元素7。這里當然應該是以下三種解決方案:
1. c(2, 5)、
2. c(3, 4)、
3 c(1, 2, 4)..
也可能存在根本沒有解決方案的情況。示例 3.
x=c(1, 2, 7),我正在尋找總和等于 的元素5。當然,這里沒有正確的解決方案。
如果我們有多個元素的向量,那么一切似乎都很簡單。在這里,我什至想出了一些替代解決方案。然而,當向量的大小增加時,問題就出現了。
我的向量是這樣的:
x= c(236L, 407L, 51L, 308L, 72L, 9787L, 458L, 5486L, 42L, 4290L,
31L, 3533L, 1102L, 24L, 100L, 669L, 9352L, 4091L, 2751L, 3324L,
3193L, 245L, 86L, 98932L, 77L, 13L, 9789L, 91L, 999L, 25L, 25379L,
9626L, 9092L, 622L, 97L, 57L, 2911L, 6L, 405L, 894L, 1760L, 9634L,
96L, 9765L, 223L, 765L, 743L, 5960L, 14L, 50L, 89L, 348L, 5875L,
5L, 58602L, 397L, 1181L, 94L, 954L, 7901L, 836L, 8810L, 52L,
15L, 48L, 26L, 4L, 66L, 5265L, 80L, 282L, 231L, 76L, 661L, 7604L,
7406L, 58L, 10L, 903L, 49446L, 80921L, 1L, 876L, 334L, 63L, 796L,
88L, 413L, 1214L, 2983L, 9518L, 595L, 708L, 53L, 321L, 12L, 634L,
4910L, 8984L, 465L)
我必須找到至少一個總和恰好為 的元素子集23745。不幸的是,我在這里完全失敗了。我寫的任何內容都是以小時計算的,無論如何我都沒有得到任何正確的結果。有誰知道如何在 R 中解決這個問題?即使是一個小小的提示,我也會很感激。
uj5u.com熱心網友回復:
這個任務聽起來像是一維裝箱問題或背包問題,在這種情況下,有許多在線資源可以幫助指導您。
一種可能的解決方案是使用gbp 包,例如
#install.packages("gbp")
library(gbp)
#> Loading required package: magrittr
#> Loading required package: data.table
x <- c(236L, 407L, 51L, 308L, 72L, 9787L, 458L, 5486L, 42L, 4290L,
31L, 3533L, 1102L, 24L, 100L, 669L, 9352L, 4091L, 2751L, 3324L,
3193L, 245L, 86L, 98932L, 77L, 13L, 9789L, 91L, 999L, 25L, 25379L,
9626L, 9092L, 622L, 97L, 57L, 2911L, 6L, 405L, 894L, 1760L, 9634L,
96L, 9765L, 223L, 765L, 743L, 5960L, 14L, 50L, 89L, 348L, 5875L,
5L, 58602L, 397L, 1181L, 94L, 954L, 7901L, 836L, 8810L, 52L,
15L, 48L, 26L, 4L, 66L, 5265L, 80L, 282L, 231L, 76L, 661L, 7604L,
7406L, 58L, 10L, 903L, 49446L, 80921L, 1L, 876L, 334L, 63L, 796L,
88L, 413L, 1214L, 2983L, 9518L, 595L, 708L, 53L, 321L, 12L, 634L,
4910L, 8984L, 465L)
test <- gbp1d_solver_dpp(p = x, w = x, c = 23745L)
list_of_selected_items <- x[as.logical(test$k)]
list_of_selected_items
#> [1] 236 51 308 458 5486 4290 31 3533 9352
sum(list_of_selected_items)
#> [1] 23745
由reprex 包(v2.0.1)于 2021 年 10 月 18 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/321829.html
下一篇:在一個字典中更新許多字典
