贪婪算法,以最大化得分

问题描述

我正在尝试在Java中实现一个方法,该方法将具有截止日期,得分和对象编号的对象的ArrayList作为输入。每个都可以通过以下方式访问:

game.get(i).number
game.get(i).score
game.get(i).deadline

其中game是ArrayList,i是索引。

在考虑每场比赛的截止日期的同时,我想最大化得分。每场比赛必须在截止日期之前完成。例如如果截止日期为5,则必须在4或更早之前完成。

例如,这是一个示例ArrayList,其相应数据按照得分值的降序排列:

Index     Game number     Score     Deadline
0         3               76        3
1         4               66        2
2         1               52        2
3         6               51        4
4         5               47        2
5         2               23        1

然后可能是以下ArrayList:

maximizedScore = [4,1,3,6] ->这里的每个索引代表小时。即使游戏3的得分高于游戏4和游戏1的得分,我们也将游戏4的索引设为0,将游戏1的索引设为1,因为它们的截止日期均为2,因此必须在此之前完成。但是,游戏3的截止日期为3,因此我们可以在第二小时进行,以使总分最大化。请注意,第5场的最后期限与第4场和第1场的期限相同,但是积分少于这两者,因此我们将其牺牲。

编辑:每个索引(0,2,4,..)代表小时,而索引处的值代表该小时完成的游戏编号。

编辑2:我们每小时只能进行一场比赛。因此,如果数据中的最新截止日期为x,则我们最多可以进行x次游戏。即在此示例中为4。

这提供了最高245分。

游戏的顺序并不重要,只要它们在截止日期之前即可。例如:[1,4,6]也可以接受,因为游戏4和游戏1都在截止日期之前完成。

不幸的是,我不知道如何实现这一目标。希望我对我的需求有一个清晰的认识。

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)