在 Python 中通过执行乘法运算找到最高分数的程序
假设我们有两个数组 nums 和大小分别为 n 和 m (n >= m) 的乘数。数组是 1 索引的。现在我们的初始分数是 0。我们想要执行 m 次操作。在第 i 个操作(1 索引)中,我们将 -
从 nums 的开头或结尾从 x 中选择一个值。
将 multipliers[i] * x 添加到分数中。
从数组 nums 中删除 x。
我们必须在执行 m 次操作后找到最大分数。
所以,如果输入像 nums = [5,10,15], multipliers = [5,3,2],那么输出将是 115,因为我们可以取 15 然后乘以 5 得到 5*15 = 75 ,那么 10*3 = 30,所以总数是 75+30 = 105,最后是 5*2 = 10,所以总数是 105+10 = 115。
示例
让我们看看以下实现以获得更好的理解 -
def solve(nums, multipliers):n, m = len(nums), len(multipliers)
dp = [[0]*m for _ in range(m+1)]
for i in reversed(range(m)):
for j in range(i, m):
k = i + m - j - 1
dp[i][j] = max(nums[i] * multipliers[k] + dp[i+1][j], nums[j-m+n] * multipliers[k] + dp[i][j-1])
return dp[0][-1]
nums = [5,10,15]
multipliers = [5,3,2]
print(solve(nums, multipliers))
输入
[5,10,15], [5,3,2]输出结果
115
以上是 在 Python 中通过执行乘法运算找到最高分数的程序 的全部内容, 来源链接: utcz.com/z/331691.html