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;
    }
}
相关推荐
云原生指北25 分钟前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
java
仰泳的熊猫2 小时前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
Leinwin5 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
无极低码5 小时前
ecGlypher新手安装分步指南(标准化流程)
人工智能·算法·自然语言处理·大模型·rag
薛定谔的悦5 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts
软件算法开发5 小时前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
enjoy嚣士5 小时前
springboot之Exel工具类
java·spring boot·后端·easyexcel·excel工具类
罗超驿6 小时前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
superior tigre6 小时前
22 括号生成
算法·深度优先