我有一个用于我的游戏信息的谷歌电子表格。它包含 2 张纸 - 一张用于怪物信息,另一张用于团队。
怪物信息表包含怪物的攻击值、防御值和魔法消耗。它几乎就像我可以召唤的怪物数据库。
团队表执行以下操作:
- 询问我目前拥有的法力值。
- 计算我可以召唤的最多 5 个怪物的列表(可以少于 5 个)。
- 每个怪物都有自己的法力消耗,因此总法力消耗不能超过我在第 1 点中给出的法力值。
- 列表应该给我一个具有最高综合攻击值的团队。召唤多少怪物都无所谓。但是每个怪物不能被召唤两次。
我一直在考虑使用 query() 函数,以便可以使用 SQL 语句。(这样我就有希望直接检索列表)
Sample: Monster Info
A B C D
1 Monster Attack Defense Cost
2 MonA 1200 1200 35
3 MonB 1400 1300 50
... ...
Sample: Team
A B C D
1 Mana 120
2
3 Attack Team
4 Monster Attack Cost Total Attack
5 MonB 1400 50 1400
6 MonA 1200 35 2600
7 ... ...
我在“团队”表中有这些公式
- A5: =query('怪物信息'!$A$:$D,"SELECT A,B,D ORDER BY B DESC LIMIT 5")
- B5: =继续(A5, 1, 2)
- C5: =继续(A5, 1, 3)
- D5:=C5
- A6: =继续(A5, 2, 1)
- B6: =继续(A5, 2, 2)
- C6:=继续(A5、2、3)
- D6:=D5+C6
这只会得到 5 个攻击力最好的怪物,无论法术力消耗如何。我该怎么做才能同时考虑攻击值和法力值?下面的示例中还显示了另一个问题:
Example: (simplified version, without defense value etc)
Monster Attack Cost
MonA 1400 50
MonB 1200 35
MonC 1100 30
MonD 900 25
MonE 500 20
MonF 400 15
MonG 350 10
MonH 250 5
如果我有 160 法力,那么明显的团队是 A+B+C+D+E(5100 攻击)。
如果我有 150 法力值,则变为 A+B+C+D+G(4950 攻击力)。
如果我有 140 法力值,则变为 A+B+C+D(4600 攻击)。
如果我有 130 法力,则变为 B+C+D+E+F(使用 125 法力进行 4100 攻击)或 A+B+C+F(使用所有 130 法力进行 4100 攻击)。
如果我有 120 法力值,则变为 B+C+D+E+G(4050 攻击)。
如果我有 110 点法力值,则变为 B+C+D+F+H(3850 攻击力)。
如您所见,结果中并没有真正的模式。
有没有专家愿意分享他们对此的见解?