leetcode1547.切棍子的最小成本

区间dp问题,思路源自灵神题解

java 复制代码
class Solution {
    public int minCost(int n, int[] cuts) {
        int[] newCuts = new int[cuts.length + 2];
        newCuts[cuts.length + 1] = n;
        System.arraycopy(cuts, 0, newCuts, 1, cuts.length);
        Arrays.sort(newCuts);//题目给的[5,6,1,4,2]是无序的,但是计算newCuts[j]-newCuts[i]时需要保证数组有序
        int[][] dp = new int[newCuts.length][newCuts.length];
        for (int i = newCuts.length - 3; i >= 0; i--) {
            for (int j = i + 2; j < newCuts.length; j++) {
                dp[i][j] = Integer.MAX_VALUE;
                for (int k = i + 1; k < j; k++) {
                    dp[i][j] = Math.min(dp[i][j], dp[i][k] + dp[k][j] + newCuts[j] - newCuts[i]);
                }
            }
        }
        return dp[0][newCuts.length - 1];
    }
}
相关推荐
2301_792308258 小时前
C++与自动驾驶系统
开发语言·c++·算法
会编程的土豆9 小时前
【数据结构与算法】LCS刷题
数据结构·算法·动态规划
无敌憨憨大王9 小时前
最小生成树
算法
Jasmine_llq9 小时前
《B4258 [GESP202503 一级] 四舍五入》
数据结构·算法·整数运算实现四舍五入整十数算法·批量输入遍历算法·逐行输出算法·整数算术运算组合算法·顺序输入处理算法
2401_874732539 小时前
模板编译期排序算法
开发语言·c++·算法
阿Y加油吧9 小时前
力扣打卡——螺旋矩阵、旋转图像
leetcode
weixin_421922699 小时前
C++与Node.js集成
开发语言·c++·算法
j_xxx404_9 小时前
力扣--分治(归并排序)算法题I:排序数组,交易逆序对的总数
数据结构·c++·算法·leetcode·排序算法
sprite_雪碧9 小时前
排版类问题(机试高频)
c语言·数据结构·算法
暮冬-  Gentle°9 小时前
设计模式在C++中的实现
开发语言·c++·算法