用 Python 找出可以兑换纸币的最短时间
pythonserver side programmingprogramming更新于 2025/10/15 17:16:17
假设有 n 个收银员兑换钱,此时,第 i 个收银员前面有 ki 个人。现在,第 i 个收银员前面排队的第 j 个人有 m[i,j] 张纸币。我们必须找出一个人可以多早兑换纸币。我们必须记住,收银员花了 5 秒钟扫描一张纸币。在为顾客扫描完每张纸币后,他/她花了 15 秒钟兑换纸币。
因此,如果输入如下:输入:n = 6,k = [12, 12, 12, 12, 12, 12]
| 7 | 8 | 9 | 7 | 9 | 6 | 10 | 9 | 9 | 6 | 7 | 8 |
| 10 | 7 | 10 | 9 | 8 | 9 | 9 | 9 | 9 | 6 | 5 | 6 |
| 9 | 8 | 8 | 9 | 8 | 6 | 7 | 9 | 10 | 6 | 6 | 7 |
| 7 | 6 | 9 | 6 | 6 | 9 | 8 | 9 | 6 | 6 | 8 | 9 |
| 9 | 8 | 7 | 6 | 5 | 10 | 8 | 10 | 7 | 6 | 6 | 8 |
| 8 | 7 | 6 | 5 | 7 | 9 | 7 | 9 | 6 | 5 | 5 | 7 |
那么输出将是 585,因为收银员需要 5 秒来扫描每个顾客的每一张钞票,所以加上 5*m[I,j]。现在每个收银员为每位顾客扫描每张钞票需要 15 秒,所以在答案上加上 15*k[]。计算每个收银员所用时间后,所用的最短时间就是答案。因此收银员 m[5] 所需的时间最少为 585。
为了解决这个问题,我们将遵循以下步骤 −
n := k 的大小
minimum := 99999
对于范围从 0 到 n 的 i,执行
temp := k[i] * 15
对于范围从 0 到 k[i] 的 j,执行
temp := temp + m[i, j] * 5
如果 temp <minimum,然后
minimum := temp
返回 minimum
示例
让我们看看下面的实现以便更好地理解 −
def minTimeToExchange(k, m): n = len(k) minimum = 99999 for i in range(n): temp = k[i] * 15 for j in range(k[i]): temp += m[i][j] * 5 if temp < minimum: minimum = temp return minimum k = [12, 12, 12, 12, 12, 12] m = [ [7,8,9,7,9,6,10,9,9,6,7,8], [10,7,10,9,8,9,9,9,9,6,5,6], [9,8,8,9,8,6,7,9,10,6,6,7], [7,6,9,6,6,9,8,9,6,6,8,9], [9,8,7,6,5,10,8,10,7,6,6,8], [8,7,6,5,7,9,7,9,6,5,5,7]] print(minTimeToExchange(k, m))
输入
[12, 12, 12, 12, 12, 12], [[7,8,9,7,9,6,10,9,9,6,7,8], [10,7,10,9,8,9,9,9,9,6,5,6], [9,8,8,9,8,6,7,9,10,6,6,7], [7,6,9,6,6,9,8,9,6,6,8,9], [9,8,7,6,5,10,8,10,7,6,6,8], [8,7,6,5,7,9,7,9,6,5,5,7]]
输出
585
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

