【发布时间】:2011-03-29 14:56:50
【问题描述】:
“给定一个正整数数组,从这个数组中找出不连续元素的最有效算法是什么,当它们相加时,会产生最大和?”这个问题的修改版本。标准版回答得很好here。
但是,如果您也可以从列表中的 anywhere 中选择指定数量的元素,无论它们是否连续,该怎么办?在这种情况下,您将如何找到最大总和?
举个例子,假设您正在建造房屋。您有 n 个住房地段可供选择。每个地块都有一个与之相关的财务价值,如果你在那里建房子,你将获得 X[i]。但是,由于分区法,您不能在连续的地块上建造(因此,如果您在 #5 地块上建造,则不能在 #4 或 #6 上建造)。您想以最大化价值的方式建造房屋。因此,如果 H[ ] 是您要建造的房屋列表,那么问题将是 H[i] = max ((H(i-1), H(i-2) + X[i])).
但是现在,如果您有额外的 k 分区许可证(其中 k 给您),可以让您在除了固定地块之外的任何地方建造?
【问题讨论】:
-
选择最大的k。还是我误解了你的问题?
-
K 是固定的,这让我很困惑。帖子已编辑。
标签: arrays algorithm dynamic-programming