当前位置:   article > 正文

Leetcode 100361&100367.切割蛋糕的最小总开销_leetcode蛋糕切割

leetcode蛋糕切割

Medium:动态规划搜索(实际就是优化后的dfs)

  1. class Solution {
  2. public:
  3. int f[25][25][25][25] = {0};
  4. int dp(int row1, int col1, int row2, int col2, vector<int>& horizontalCut, vector<int>& verticalCut){
  5. if(row1 == row2 && col1 == col2) // 即该方向上已经无需切割了
  6. return 0;
  7. if(f[row1][col1][row2][col2]) // 已经计算过
  8. return f[row1][col1][row2][col2];
  9. int cost = 1e9; // ☆状态计算划分:为两个部分(横着切or竖着切)
  10. for(int i = row1; i < row2; i ++) // 水平方向切割(分割成子问题去求解)
  11. cost = min(cost, horizontalCut[i] + dp(row1, col1, i, col2, horizontalCut, verticalCut) + dp(i + 1, col1, row2, col2, horizontalCut, verticalCut));
  12. for(int j = col1; j < col2; j ++) // 竖直方向进行切割
  13. cost = min(cost, verticalCut[j] + dp(row1, col1, row2, j, horizontalCut, verticalCut) + dp(row1, j + 1, row2, col2, horizontalCut, verticalCut));
  14. f[row1][col1][row2][col2] = cost;
  15. return cost;
  16. }
  17. int minimumCost(int m, int n, vector<int>& horizontalCut, vector<int>& verticalCut) {
  18. return dp(0, 0, m - 1, n - 1, horizontalCut, verticalCut);
  19. }
  20. };

hard:区别在与数据范围,贪心“交换论证法”

证明过程笔记:(两种思考思路)

  1. class Solution {
  2. public:
  3. long long minimumCost(int m, int n, vector<int>& horizontalCut, vector<int>& verticalCut) {
  4. sort(horizontalCut.begin(), horizontalCut.end(), greater<int>()); // 整理下C++降序排序的两种办法
  5. sort(verticalCut.begin(), verticalCut.end(), greater<int>());
  6. int i = 0, j = 0; // 两个指针,i:横切指针 j:竖切指针
  7. long long cost = 0;
  8. int cnth = 1, cntv = 1; // 每次计算当前切割的cost的时候,依赖于前面的横切数/竖切个数
  9. while(i < m - 1 || j < n - 1){
  10. if(j >= n - 1 || i < m - 1 && horizontalCut[i] > verticalCut[j]){
  11. // 代价更大的切割应该放在前面, 故此处应该进行横切
  12. cost += cntv * horizontalCut[i];
  13. i ++;
  14. cnth ++; // 横切数增加
  15. }else{// 竖切
  16. cost += cnth * verticalCut[j];
  17. j ++;
  18. cntv ++; // 竖切数增加
  19. }
  20. }
  21. return cost;
  22. }
  23. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/905534
推荐阅读
相关标签
  

闽ICP备14008679号