在 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
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下