zoukankan      html  css  js  c++  java
  • LC956. Tallest Billboard

    你正在安装一个广告牌,并希望它高度最大。这块广告牌将有两个钢制支架,两边各一个。每个钢支架的高度必须相等。

    你有一堆可以焊接在一起的钢筋 rods。举个例子,如果钢筋的长度为 1、2 和 3,则可以将它们焊接在一起形成长度为 6 的支架。

    返回广告牌的最大可能安装高度。如果没法安装广告牌,请返回 0。

    分析:

    class Solution {
    public:
        int tallestBillboard(vector<int>& rods) {
            int s = accumulate(rods.begin(), rods.end(), 0);
            vector<int> dp(s + 1, -1);
            dp[0] = 0;
            for (int h : rods) {
                auto cur(dp);
                for (int i = 0; i <= s; ++i) {
                    if (cur[i] < 0) continue;
                    if (i + h <= s) dp[i + h] = max(dp[i + h], cur[i]);
                    dp[abs(i - h)] = max(dp[abs(i - h)], cur[i] + min(h, i));
                }
            }
            return dp[0];
        }
    };
  • 相关阅读:
    Rotate List
    Spiral Matrix II
    Jump Game
    Maximum Subarray
    Pow(x, n)
    Anagrams
    Permutations
    unity 相机的问题
    NGUI 学习
    空间数据库1
  • 原文地址:https://www.cnblogs.com/betaa/p/12421447.html
Copyright © 2011-2022 走看看