在 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