leetcode_1049. Last Stone Weight II_[DP]

leetcode_1049. Last Stone Weight II_[DP]

1049. Last Stone Weight II

https://leetcode.com/problems/last-stone-weight-ii/

 

题意:从一堆石头里任选两个石头s1,s2,若s1==s2,则两个石头都被销毁,否则加入s1<s2,剩下一块重量为s2-s1的石头。重复上面的操作,直至只剩一块石头,或没有石头。问最后剩下的石头的重量最小为多少(0表示没有剩余石头)。

解法:

每次选两块石头进行相减问最后一块石头重量最小为多少,可以看作是将所有石头分为两波,使两波石头的差值的绝对值最小。

使用背包(snapsack)解决。dp[i]表示stones是否能组成重量为i的group。

class Solution
{
public:
    int lastStoneWeightII(vector<int>& stones)
    {
        int sum = accumulate(stones.begin(),stones.end(),0);
        vector<bool> dp(sum/2,0);
        dp[0]=1;
        for(int s:stones)
            for(int j=sum/2;j>=s;j--)
                dp[j] = dp[j]|dp[j-s];
        int res = sum;
        for(int i=0;i<=sum/2;i++)
            res = min(res, sum-dp[i]*i*2);
        return res;
    }
};

 

转载于:https://www.cnblogs.com/jasonlixuetao/p/10890116.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100908.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • [Python3]Numpy数组转置的三种方法T、transpose、swapaxes「建议收藏」

    [Python3]Numpy数组转置的三种方法T、transpose、swapaxes「建议收藏」天下难事,必作于易;天下大事,必作于细——老子Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环。1.首先数组转置(T)创建二维数组data如下:进行矩阵运算时,经常要用数组转置,比如计算矩阵内积X^TX.这时就需要利用数组转置,如下:2.轴对换之transpose对于高维数组,可以使用轴对换来对多…

  • 数据库课程设计(饭店点餐系统)

    数据库课程设计(饭店点餐系统)1.需求分析2.概念结构设计2.1数据需求2.1.1下订单阶段需要的数据:2.1.2点菜阶段需要的数据:2.1.3结账阶段需要的数据:2.1.4员工管理需要的数据:2.1.5顾客管理需要的数据:2.1.6消费记录管理需要的数据有:2.2事务需求2.2.1数据录入2.2.2数据更新/删除2.2.3数据查询2.3数据项2.2抽象出系统的实体2.3设计E-R图2.3.1菜谱(Menus)E-R图2.3.2顾客(Tomer)E…

  • 事务的四种隔离级别_事务默认的隔离级别

    事务的四种隔离级别_事务默认的隔离级别数据库事务的隔离级别有4种,由低到高分别为Readuncommitted、Readcommitted、Repeatableread、Serializable。Readuncommitted读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。事例:老板要给程序员发工资,程序员的工资是3.6万/月。但是发工资时老板不小心按错了数字,按成3.9万/月,该钱已经打到程序员的户口,

    2022年10月14日
  • 自监督学习-MoCo-论文笔记[通俗易懂]

    自监督学习-MoCo-论文笔记[通俗易懂]自监督学习-Moco

  • byteBuffer_bytebuffer flip

    byteBuffer_bytebuffer flip为什么会在RocketMQ系列里面参杂一篇ByteBuffer的文章呢?因为RocketMQ存储消息,是存储在文件中的,而且刚好使用的是ByteBuffer。这个属于JavaNIO的内容,用到的比较少,如果像我一样没有相关的知识做铺垫,强行看RocketMQ消息存储相关的代码会比较头疼。为了减少学习难度,这里很有必要先介绍一下ByteBuffer相关的知识。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号