下面附上Python代码: import numpy as np table = np.zeros([100 + 1, 5 + 1], dtype=int) def spend(n, p): assert 1 <= p <= n if n == p: return 0 minSpend = 10e5 for k in range(1, n - p + 1): if p == 1: maxSpend = table[max(k, n - k), 1] + 1 else: maxSpend = table[n - k, p] + 1 if k < p: for i in range(max(1, p + k - n), k + 1): currentSpend = table[k, i] + table[n - k, p - i] + 1 if currentSpend > maxSpend: maxSpend = currentSpend else: maxSpend = max(maxSpend, table[k, p]) for i in range(max(1, p + k - n), p): currentSpend = table[k, i] + table[n - k, p - i] + 2 if currentSpend > maxSpend: maxSpend = currentSpend if maxSpend < minSpend: minSpend = maxSpend table[n, p] = minSpend
def main(): for p in range(1, 5 + 1): for n in range(p, 100 + 1): spend(n, p) print(table) print("从100人中找出5位感染者需要使用 {0} 个试剂盒".format(table[100, 5])) if __name__ == '__main__&(688)#39;: main() 代码运行的结果是23,我也不知道对不对. 不怎么刷算法题,如果有错误请用善意的语言提出哈😀.