【发布时间】:2015-10-16 14:02:42
【问题描述】:
我们有 N 个类型 1 的硬币和 M 个类型 2 的硬币。一个游戏板有 N 个类型 1 的方格和 M 个类型 2 的方格。在这个游戏中,我们必须在每个方格中投入一枚硬币。放置所有硬币后,我们将根据我们的硬币放置策略获得分数。
如果类型 1 方块包含类型 1 硬币,那么我们将获得 A 分,如果类型 2 方块包含类型 2 硬币,那么我们将获得 B 分,在所有其他情况下,我们将获得 C 分。我们的游戏总得分将是所有方格得分的总和。
可用的用户输入是 (N,M,A,B,C)
我们怎样才能最大化我们的分数?
例如,如果 N=3 M=4 A=500 B=800 C=600
在最优策略下,我们将 3 个类型 1 的硬币放入 3 个类型 1 的方格中,得分 =500+500+500 = 1500,我们将 4 种类型的硬币放入 4 个类型 2 的方格中分数 =800+800+800+800 = 3200 所以总分是 1500+3200 = 4700
【问题讨论】:
-
SO 不是免费的编码服务。编写程序来做,如果你不能让它工作,把你尝试过的贴在这里,我们会帮你解决问题。
-
@CyberDrone One 通常会最大化成本、数量、时间(以秒为单位)等数字。但是你试图最大化像 4A+6B+4C 这样的总和,这是没有意义的。给 A、B、C 赋值,或者至少告诉 A>B>C、N>M。你明白我的意思吗?
-
我对编码比较陌生,我只是想在实现它之前找出一个合适的算法。我不是在寻找实际的代码,我只需要开发算法的帮助。它会是如果有人可以帮助我解决逻辑,那就太好了
-
@CyberDrone 这个问题还是很模糊的,因为我们甚至不知道游戏板的图案是什么,n(type-1) 和 m(type-2) 是怎样的放置的方块。如果我们可以区分类型 1 正方形和类型 2 正方形(也可以区分硬币类型),那么我们就可以基于两个变量的纯线性方程(参见 LPP:en.wikipedia.org/wiki/Linear_programming)以给定的目标函数作为我们的总分。
-
我们可以认为类型 1 的正方形和硬币是红色的,类型 2 的正方形和硬币是蓝色的。正方形的空间排列对这个问题没有意义,所以我们可以假设任何正方形的排列。
标签: c algorithm optimization