1
我試圖拿一個數字列表,並將它們放入> = N個組,使得每個組的總和大約(但不一定完全相等),並且「異常值」可以成爲他們自己的一羣。按'等於'分組
所以對於3組的目標和的類似的輸入:
[3, 2, 1, 4, 2, 5]
輸出可能是:
[[5,1], [4,2], [3,2]]
每個基團是所述的各個和
6, 6, 5
我認爲我已經掌握了方法,因爲僞代碼看起來像這樣:
let target = Ceil(Sum(Series)/NumberOfTargetGroups) //The ideal size of each group
while (count(UnpickedNumbers) > 0)
let CurrentGroup = new group
while (sum(CurrentGroup) < target)
for each Unpicked in sortDesc(UnpickedNumbers)
if (sum(CurrentGroup) + Unpicked)
Add Unpicked to current group
Remove unpicked from available numbers
我想不通的是如何把這一邏輯爲GroupBy(n => ...)
- 之所以想這樣做在於號碼列表實際上是由一系列對象的屬性來,我希望以這種方式進行分組。
這實現它很好,但我仍然無法弄清楚的是我如何使用它與GroupBy(),以便我可以在我的對象上使用它。所以說我以這種方式將Widget.Height屬性的IEnumerable分組。 –
PhonicUK
2014-09-01 20:11:56
@ PhonicUK看我的編輯 - 我已經改變了你。 – 2014-09-01 20:22:04
@PhonicUK更多,你不必使用'GroupBy' :) – 2014-09-01 20:39:54