使用尽可能多的数字来获取总和

时间:2018-03-04 17:20:17

标签: python algorithm dynamic-programming

鉴于三个数字,所有这些都是积极的。两个数字,您可以加在一起,最多。我必须返回最大数量,这些数字可以加在一起,同时保持在最大限度或正好处于最大限度。换句话说:

我提供两个数字 n m ,总和 s 。如果出现以下情况,请找出 a + b 可能的最大金额:

a * n + b * m <= s

我认为如果两个数字完全相加,那么我有一个有效(但过于复杂和冗长)的解决方案,但是如果有一个余数则会中断。

例如,如果两个数字分别为3和5且总和为54,则答案为18。

1 个答案:

答案 0 :(得分:2)

答案始终是m, n中较小的s分组的最长时间。

代码:

max_a_plus_b = divmod(s, min(n, m))

为什么:

答案(a + b)是mn的实例的原始计数。如果您首先假设max_a_plus_bm, n中较小者s中div的次数。然后少拿一个因子和另一个因子将给出相同的a+b但更大的s,所以答案在那时已经是最佳的。