1547. 切棍子的最小成本
-
解题思路
- 这个题和戳气球有相同的思想,戳气球是以「最后戳哪个气球」组织答案,这个题是,「先切哪个」组织答案
- 戳气球
-
代码
class Solution { public: // [L, R]上,怎么切? int process(vector<int> &cuts, int L, int R, vector<vector<int>> &dp) { if (L > R) { return 0; } if(L == R) { return cuts[R + 1] - cuts[L - 1]; } if (dp[L][R] != -1) { return dp[L][R]; } // 先切谁? int ans = INT32_MAX; for (int i = L; i <= R; ++i) { int next = process(cuts, L, i - 1, dp) + process(cuts, i + 1, R, dp) + cuts[R + 1] - cuts[L - 1]; ans = min(ans, next); } dp[L][R] = ans; return ans; } int minCost(int n, vector<int>& cuts) { int m = cuts.size(); sort(cuts.begin(), cuts.end()); vector<int> newCuts(m + 2, 0); for (int i = 1; i <= m; ++i) { newCuts[i] = cuts[i - 1]; } newCuts[m + 1] = n; vector<vector<int>> dp(m + 2, vector<int>(m + 2, -1)); return process(newCuts, 1, m, dp); } };
标签:
数据结构与算法
, leetcode刷题动态规划
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理