leetcode1770.执行乘法运算的最大分数

贪心:每次都选择乘数最大的进行累加能到结果。但是在示例2中,第三步时mul是3,而可选择的num是-3和1,采用贪心会选择1但是正确的答案是选择-3,贪心并不能解决该问题

java 复制代码
class Solution {
    public int maximumScore(int[] nums, int[] multipliers) {
        int left=0,right=nums.length-1;
        int result=0;
        for(int mul:multipliers){
            int add=nums[left]*mul>=nums[right]*mul?nums[left++]*mul:nums[right--]*mul;
            result+=add;
        }
        return result;
    }
}

区间dp:

java 复制代码
class Solution {
    public int maximumScore(int[] nums, int[] multipliers) {
        int n = nums.length, m = multipliers.length;
        int[][] dp = new int[m + 1][m + 1];
        for (int[] ints : dp) {
            Arrays.fill(ints, Integer.MIN_VALUE);
        }
        dp[0][0] = 0;。。。
        for (int i = 1; i <= m; i++) {
            for (int j = 0; j < i; j++) {
                //1.选择右边的数字
                int endIndex = n - (i - j);
                dp[i][j] = Math.max(dp[i][j], dp[i - 1][j] + multipliers[i - 1] * nums[endIndex]);
                //2.选择左边的数字
                dp[i][j + 1] = Math.max(dp[i][j + 1], dp[i - 1][j] + multipliers[i - 1] * nums[j]);
            }
        }
        int maxScore = Integer.MIN_VALUE;
        for (int i = 0; i < m; i++) {
            maxScore = Math.max(maxScore, dp[m][i]);
        }
        return maxScore;
    }
}
相关推荐
颜酱9 小时前
二叉树遍历思维实战
javascript·后端·算法
宝贝儿好9 小时前
第二章: 图像处理基本操作
算法
符哥20089 小时前
C++ 进阶知识点整理
java·开发语言·jvm
静听山水9 小时前
Redis核心数据结构-Set
数据结构·数据库·redis
小陈phd9 小时前
多模态大模型学习笔记(二)——机器学习十大经典算法:一张表看懂分类 / 回归 / 聚类 / 降维
学习·算法·机器学习
@––––––9 小时前
力扣hot100—系列4-贪心算法
算法·leetcode·贪心算法
Sayuanni%39 小时前
初阶_多线程1(线程含义与关键属性)
java
程序媛徐师姐9 小时前
Java基于微信小程序的模拟考试系统,附源码+文档说明
java·微信小程序·java模拟考试系统小程序·模拟考试微信小程序·模拟考试系统小程序·模拟考试小程序·java模拟考试小程序
CoovallyAIHub9 小时前
让本地知识引导AI追踪社区变迁,让AI真正理解社会现象
深度学习·算法·计算机视觉
CoderCodingNo9 小时前
【GESP】C++ 二级真题解析,[2025年12月]第一题环保能量球
开发语言·c++·算法