当前位置: 首页 > article >正文

1547. 切棍子的最小成本-cangjie

题目

1547. 切棍子的最小成本

思路

改写自官方题解官方题解

代码

import std.sort.SortExtension
class Solution {
    func minCost(n: Int64, cuts: Array<Int64>): Int64 {
        var size = cuts.size
        var myCuts = ArrayList(cuts)
        myCuts.sortBy(stable: true){ rht: Int64, lht: Int64 =>
            if (rht < lht) {
                return Ordering.LT
            }
            if (rht > lht) {
                return Ordering.GT
            }
            return Ordering.EQ
        }
        myCuts.insert(0,0)
        myCuts.append(n)
        // for(cut in myCuts){
        //     print("${cut} ")
        // }
        // println()
        var dp = Array<Array<Int64>>(size+2, item:Array<Int64>())
        for(i in 0..size+2){
            dp[i] = Array<Int64>(size+2, item:0)
        }
        for(i in size..=1 : -1){
            for(j in i..=size){
                // println("i = ${i}, j = ${j}")
                if(i == j){
                    dp[i][j] = 0
                }
                else{
                    dp[i][j] = Int64(Int32.Max)
                }
                for(k in i..=j){
                    dp[i][j] = min(dp[i][j], dp[i][k-1]+dp[k+1][j])
                }
                dp[i][j] += myCuts[j+1] - myCuts[i-1]
            }
        }

        // for(i in 0..size+2){
        //     for(j in 0..size+2){
        //         print(dp[i][j])
        //         print(" ")
        //     }
        //     println()
        // }

        return dp[1][size]
    }
}

复杂度

在这里插入图片描述

遇到的坑

嵌套数组初始化问题

var dp = Array<Array<Int64>>(size+2, item:Array<Int64>())
for(i in 0..size+2){
	dp[i] = Array<Int64>(size+2, item:0)
}

结果

在这里插入图片描述

cangjie


http://www.kler.cn/a/388917.html

相关文章:

  • C语言 | Leetcode C语言题解之第556题下一个更大元素III
  • docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
  • 使用etl工具kettle的日常踩坑梳理之二、从Hadoop中导出数据
  • JVM详解:JVM的系统架构
  • 十三、注解配置SpringMVC
  • java模拟键盘实现selenium上下左右键 table中的左右滚动条实现滚动
  • STM32F103C8T6学习笔记4--模拟旋转编码器的按键中断
  • 【MongoDB】MongoDB的聚合(Aggregate、Map Reduce)与管道(Pipline) 及索引详解(附详细案例)
  • 【业务】支付总结和GP支付功能测试
  • LRU缓存算法
  • Java集合框架之数组列表(ArrayList)
  • SDL事件相关
  • 中安OCR电子行驶证、驾驶证识别,助力便捷出行与智慧交通
  • Objective-C 1.0和2.0有什么区别?
  • git中使用tag(标签)的方法及重要性
  • 股票量化实时行情接口WebSocket接入Python封装
  • netcat工具安装和使用
  • 目前对于后期的打算
  • ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
  • linux笔记(selinux)
  • 欢迎 Stable Diffusion 3.5 Large 加入 Diffusers
  • Android MavenCentral 仓库更新问题
  • 【9692】基于springcloud+vue的智慧养老平台
  • Linux:理解动静态库
  • Linux安装与配置 Gitblit 1.9.3 服务
  • 如何在 Linux 服务器上安装 Git