- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近参加了一个面试,被问到以下问题:
Adam 非常擅长玩街机游戏,他玩的每场游戏都会赢。一个晴朗的日子,当他走在街上时,他发现了一家街机商店,玩家每赢一场游戏就会支付真金白银——然而,这家商店每场比赛只支付一次。商店有一些游戏,他们会为获胜者支付奖金,每个游戏都有自己的完成时间和支付率。亚当对通过自己的才能赚钱的前景感到兴奋,他走进商店才发现商店将在 2 小时(正好 120 分钟)后关门。知道他不能在那段时间玩所有游戏,他决定选择能使他的收入最大化的游戏
街机游戏板示例游戏完成_TIME(以分钟为单位)PAYOUT_RATE
Pac-man 90 400
Mortal Kombat 10 30
Super Tetris 25 100
Pump it Up 10 40
Street Fighter II 90 450
Speed Racer 10 40
一种可接受的解决方案是,即使游戏列表或完成时间或支付率发生变化,它仍会选择最佳 yield 。
问题:用 Java/Scala/Python 编写代码,帮助 Adam 选择最赚钱的游戏序列。
然后,假设您有一个可变的游戏列表及其支付率。选择最赚钱的游戏的最佳方法是什么?
输入说明:输入的第一行始终是一个整数,表示在第一行之后要读取的行数。在我们的示例测试用例中,第一行有 6 行,第一行之后有 6 行,每行都有一个游戏、completion_time 和 payout_rate。在每一行数据中,游戏、完成时间和支付率由“,”(逗号)分隔。游戏板可能会改变,但商店仍会在 120 分钟后关门。
输入:6
Pac-man,80,400
Mortal Kombat,10,30
Super Tetris,25,100
Pump it Up,10,40
Street Fighter II,90,450
Speed Racer,10,40
输出说明:按字母顺序将他赚得最多的游戏名称打印到标准输出中
输出
Mortal Kombat
Pump it Up
Speed Racer
Street Fighter II
到目前为止尝试过:
import sys
import itertools
line = sys.stdin.readline()
def biggest_payout(line):
a = line.split(sep=' ')
b = []
for i in range(1, len(a)):
b.append(a[i].split(sep=','))
c = []
for i in range(len(b)):
c.append(int(b[i][1]))
min_sums = []
for L in range(0, len(c)+1):
for subset in itertools.permutations(c, L):
min_sums.append(sum(subset))
e = []
for i in range(len(b)):
e.append(int(b[i][2]))
money_sums = []
for L in range(0, len(e)+1):
for subset in itertools.permutations(e, L):
money_sums.append(sum(subset))
k = []
for i in range(len(b)):
k.append(b[i][0])
movie_combos = []
for L in range(0, len(k)+1):
for subset in itertools.permutations(k, L):
movie_combos.append(subset)
while True:
if min_sums[money_sums.index(max(money_sums))] > 120:
money_sums[money_sums.index(max(money_sums))] = 0
else:
index = money_sums.index(max(money_sums))
break
return movie_combos[index]
for line in sys.stdin:
print(biggest_payout(line))
错误:
File "/temp/file.py", line 13, in biggest_payout
c.append(int(b[i][1]))
IndexError: list index out of range
我的数组索引越界,请问有人能指导我如何解决这个问题吗?
最佳答案
你不应该用 ' '
分割行,你的代码还有更多问题。
此外,排列将包含(Pac-man, Mortal Kombat)
和 (Mortal Kombat, Pac-man)
等。我会而是使用组合(在这种情况下,组合比排列少 10 倍)并编写类似这样的内容。
import sys
import itertools
n = int(sys.stdin.readline())
games = {}
for i in range(n):
s = sys.stdin.readline().rstrip().split(',')
games[s[0]] = (int(s[1]), int(s[2]))
res = ()
maxpay = 0
for k in range(1, n):
for z in itertools.combinations(games, k):
time = 0
pay = 0
for x in z:
time += games[x][0]
if time > 120:
break
pay += games[x][1]
if time <= 120 and pay > maxpay:
res = z
maxpay = pay
print('\n'.join(sorted(list(res))))
测试。
$cat data
6
Pac-man,80,400
Mortal Kombat,10,30
Super Tetris,25,100
Pump it Up,10,40
Street Fighter II,90,450
Speed Racer,10,40
$python3 solution.py < data
Mortal Kombat
Pump it Up
Speed Racer
Street Fighter II
关于python - 列表索引越界(街机游戏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63689283/
如标题所示,ans_list是一个答案列表,ans_index是一个数字(答案在词汇表中的索引,但与atm无关) 这里生成的 tree.anslist 是什么? (例如,仅针对第一个),忽略迭代。 f
我目前将用户的输入存储在逗号分隔的列表中,如下所示: Userid | Options 1 | 1,2,5 用户在一个数组形式中勾选一组选项,然后用逗号连接起来 1,2,5 然后 MySQ
我目前将用户的输入存储在逗号分隔的列表中,如下所示: Userid | Options 1 | 1,2,5 用户在一个数组形式中勾选一组选项,然后用逗号连接起来 1,2,5 然后 MySQ
我想知道如何完全展平列表和包含它们的东西。除其他外,我想出了一个解决方案,它可以将具有多个元素的东西滑倒并将它们放回原处,或者在滑倒后将具有一个元素的东西拿走。 这与 How do I “flatte
我想知道如何完全展平列表和包含它们的东西。除其他外,我想出了一个解决方案,它可以将具有多个元素的东西滑倒并将它们放回原处,或者在滑倒后将带有一个元素的东西拿走。 这与 How do I “flatte
这个问题已经有答案了: Convert nested list to 2d array (3 个回答) 已关闭 7 年前。 java中有没有快捷方式可以转换 List> 到 String[][] ?
我在排序时遇到问题 List> 。我创建了一个自定义比较器,在其中编写了对数据进行排序的代码。 public class CustomComparator implements Comparator
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: Java Generics: Cannot cast List to List? 我只是想知道为什么下面的java代
试图想出一个 LINQy 方法来做到这一点,但我什么也没想到。 我有一个对象列表<>,其中包含一个属性,该属性是逗号分隔的字母代码列表: lst[0].codes = "AA,BB,DD" lst[1
假设我有这些任务: points = [] point = (1, 2) 我怎么会这样做: points += point 它工作得很好,并且给了我点 = [1, 2]。但是,如果我这样做: poin
如何在 scala 中将 List[Task[List[Header]]] 类型转换为 Task[List[Header]]。 我有一个方法返回 Task[List[Header]] 并多次调用 do
如何在 Java 中查找二维列表的元素? 我有一个参数为 List> 的函数我想知道如何找到这个列表的行和列。 最佳答案 如果你喜欢 List> obj 然后你就可以像这样访问 obj.get(cur
分配 List到 List工作正常。 分配 List>到 List>不编译。 代码 public class Main { public static void main(String[] a
我正在用 Java 编写一个方法,该方法必须接收并迭代 Serializable 的 List。 有什么区别: public void myMethod(List list) { } 和 public
我看到很多人想用 mvvm 更新网格/列表/树的一部分,但他们不想刷新整个列表。 对于所有遇到此问题的人,我做了以下示例。 希望这对你有用。 最佳答案 这是一个简单的例子。整个代码中最重要的是: Bi
我正在为现有的 C++ 库编写包装器,该库使用列表,其中 T 是自定义结构。我被建议使用 vector 而不是列表,但我试图避免修改库。 为了更好地理解这个场景,我做了一个简单的应用程序,使用一个列表
List list List list 这两种声明有什么区别吗? 谢谢, 最佳答案 是的。 List可以包含所有派生自 Base 的不同事物的混合物. List包含同质项(从某种意义上说,它们必须全部
有人可以尽可能详细地解释以下类型之间的区别吗? List List List 让我更具体一点。我什么时候想使用 // 1 public void CanYouGiveMeAnAnswer(List l
我有一个元组列表,每个元组都是一对列表。所以我的数据看起来像: mylist = [(['foo', 'bar'], ['bar', 'bar']),(['bar', 'bar'],['bar', '
也许是一个时髦的标题,但我遇到了以下问题: 给定一个类型为 (a * b) list 的列表,我想创建一个类型为 (a * b list) list 的新列表。一个例子: 给定列表 let testL
我是一名优秀的程序员,十分优秀!