我正在使用 VB.NET,我正在尝试提出一些算法或一些伪代码,或者一些 VB.NET 代码,它们可以让我执行以下操作(希望我能很好地解释这一点):
我有 2 个集合对象,Cob1 和 Cob2。这些集合对象存储实现称为 ICob 的接口的对象。ICob 有 3 个属性。一个布尔值 IsSelected 属性、一个名为 Length 的属性,它返回一个 TimeSpan,以及一个 Rating 属性,它是一个短整数。
好的,现在 Cob1 有大约 100 个对象存储在集合中,而 Cob2 是一个空集合。我想要做的是从 Cob1 中选择对象并将它们复制到 Cob2。我希望在选择对象时遵守以下规则:
我希望能够指定一个时间跨度,并且我希望选择足够多的对象以适应我指定的时间跨度(基于 Length 属性)。例如,如果我将 10 分钟的时间跨度传递给我的函数,它应该选择足够多的对象来填满整个 10 分钟的窗口,或者尽可能接近填满它。
不应选择任何对象两次。
具有较高等级(通过等级属性)的对象应该比其他对象更有可能被拾取。
不应再次选择在过去 30 分钟内已选择的任何对象(以便每个对象最终将至少被选择一次),无论评级如何。
谁能给我一些关于如何实现这一目标的提示?提示可以是心理过程、VB.NET 示例代码、伪代码或任何其他可能对我有帮助的形式。
谢谢
编辑:
如果我透露我在现实生活中想要做的事情,也许这会对每个人都有帮助。
我正在为一个广播电台编写软件,它会自动选择要播放的音乐和广告,有点像计算机化的程序管理器。
长度表示声音字节(歌曲或广告)的长度,评级就是这样。如果这首歌很受欢迎,它会获得更多的播放时间。如果广告商支付更多的钱,那么它也会获得更多的播出时间。
所以我的程序应该选择播放20分钟左右的歌曲,然后选择一些广告播放5分钟左右。
希望这会有所帮助。
感谢大家的投入!
艾伦