首页 > 编程语言 ># 代码随想录算法训练营第38天 | 01背包问题:1049.最后一块石头的重量II(最多能装多少)、494.目标和(组合问题)、474. 一和零(二维01组合)

# 代码随想录算法训练营第38天 | 01背包问题:1049.最后一块石头的重量II(最多能装多少)、494.目标和(组合问题)、474. 一和零(二维01组合)

时间:2024-07-23 15:29:08浏览次数:15  
标签:01 target 组合 int 题解 随想录 num https dp

1049.最后一块石头的重量II
https://leetcode.cn/problems/last-stone-weight-ii/
代码随想录
https://programmercarl.com/1049.最后一块石头的重量II.html#算法公开课
494.目标和
https://leetcode.cn/problems/target-sum/description/
代码随想录
https://programmercarl.com/0494.目标和.html#算法公开课
474.一和零
https://leetcode.cn/problems/ones-and-zeroes/description/
代码随想录
https://programmercarl.com/0474.一和零.html#思路

1049.最后一块石头的重量II

题解思路

  • dp算法含义
    • dp[i][j] 第i个石头在j的重量限制下 最大重量;
    • 循环顺序 倒序 j在当前循环的st之前停止;

题解代码

class Solution:
    def lastStoneWeightII(self, stones: List[int]) -> int:
        target = sum(stones)//2
        dp = [0]*(target+1)

        for st in stones:
            for j in range(target,st-1,-1):
                dp[j] = max(dp[j],dp[j-st]+st)
        return sum(stones)-dp[-1]-dp[-1]

494. 目标和

题解思路

  • dp[j]:第j容积大的包,有dp[j]种方法;
  • 递推公式:dp[j]+=dp[j-nums[i]]

题解代码

class Solution:
    def findTargetSumWays(self, nums: List[int], target: int) -> int:
        if (sum(nums)+target)%2!=0 or abs(sum(nums))<abs(target):
            return 0 
        x = (sum(nums)+target)//2
        dp = [0]*(x+1)
        dp[0] = 1

        for num in nums:
            for j in range(x,num-1,-1):
                dp[j] += dp[j-num]
        return dp[-1]

474.一和零

题解思路

  • dp[i][j] s在i个0 j个1限制下 最大的个数;
  • 遍历顺序:正常01背包 变成二维数组理解;

题解代码

class Solution:
    def findMaxForm(self, strs: List[str], m: int, n: int) -> int:
        dp = [[0]*(n+1) for _ in range(m+1)]

        for s in strs:
            zero_num = s.count("0")
            one_num = len(s)-zero_num
            for i in range(m,zero_num-1,-1):
                for j in range(n,one_num-1,-1):
                    dp[i][j] = max(dp[i][j],dp[i-zero_num][j-one_num]+1)
        return dp[-1][-1]

标签:01,target,组合,int,题解,随想录,num,https,dp
From: https://www.cnblogs.com/P201821440041/p/18318360

相关文章

  • 代码随想录day7 | 454 四数相加|| 383 赎金信 15 三数之和 18 四数之和
    454四个数相加==0funcfourSumCount(nums1[]int,nums2[]int,nums3[]int,nums4[]int)int{ //1.用哈希表存储nums1和nums2两者之和的所有可能情况 //2.遍历nums3和nums4两者之和的相反数,如果在哈希表中存在,则结果加上哈希表中的值 //3.返回结果 sum1:......
  • P3275 [SCOI2011] 糖果
    原题链接题解缩点+差分约束,求最小值故跑最长路无解的情况:存在正权环,由于是有向图,所以环上的元素在一个强连通分量内,判断强连通分量内存不存在有正权值的边,然后缩点,拓扑跑一圈缩点时要一个超级源点就可以只dfs一次了code#include<bits/stdc++.h>usingnamespacestd;#def......
  • 算法-代码随想录-哈希表
    有效的字母异位词思路:数组作为一个简单的哈希表,可以用来记录字符串中每个字符出现的次数。可以设置一个数组,第一轮遍历s中的字符,字符每出现一次,在数组对应位置+1。第二轮遍历t中的字符,字符每出现一次,在数组对应位置-1。最后遍历作为哈希表的数组,如果都为0,则说明每个字符出现的......
  • 【待做】【攻防技术系列+漏洞复现】MS-17010
    虚拟机环境搭建:Kali,192.168.10.131win7,192.168.10.133winXP,192.168.10.137众所周知,msfconsole是一款神器的工具,里面具备了市面上绝大多数的payload,而在往常的ms17010漏洞最常见的四个payload如下:漏洞检测payload:auxiliary/scanner/smb/smb_ms17_010x64架构漏洞利用pay......
  • java学习day01
    一.java安装1.1安装java1.81.2java内创建文件夹jdk和jre分别安装java的jdk和jre1.3环境变量JAVA_HOMEE:\work\java\jdk(自己电脑的文件位置)CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;Path内增加%JAVA_HOME%\bin(上移到最上方)二.java2.1......
  • P4047 [JSOI2010] 部落划分
    原题链接题解一步一步来,当\(k=2\)的时候,怎么分?当\(k=2\)时,两个点集之间的距离等于两个点集中各取一个点之间的最小距离,我们联想到最小生成树的建立过程,按边权从小到大依次加入,如果两个点所属集合不同便合并因此,当\(k=2\)的时候,答案是最小生成树的最后一个合并边(树边)可......
  • [SDOI2012] 走迷宫 题解
    [SDOI2012]走迷宫题目描述Morenan被困在了一个迷宫里。迷宫可以视为\(n\)个点\(m\)条边的有向图,其中Morenan处于起点\(s\),迷宫的终点设为\(t\)。可惜的是,Morenan非常的脑小,他只会从一个点出发随机沿着一条从该点出发的有向边,到达另一个点。这样,Morenan走的步数可能......
  • 「代码随想录算法训练营」第十八天 | 二叉树 part8
    669.修剪二叉搜索树题目链接:https://leetcode.cn/problems/trim-a-binary-search-tree/题目难度:中等文章讲解:https://programmercarl.com/0669.修剪二叉搜索树.html视频讲解:https://www.bilibili.com/video/BV17P41177ud?share_source=copy_web题目状态:没有思路,看题解过......
  • spring使用mysql数据库实现关键字别字、拼音、拼音首字母、拼音所有首字母组合搜索
    1、实现思路前端传入的文字、拼音、别字、拼音首字母、拼音所有首字母组合传入到后台,通过后台接口转成拼音,然后通过转换后的拼音结合sql语句查询匹配。2、后台实现pom配置:<!--中文转拼音--><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4......
  • Unity学习记录01:unity2D 控制玩家移动的代码
    学unity搞东西肯定要会控制玩家移动啦,具体学习是参考了b站up主托尔的小lin,再结合我自己的经验总结出来的方法。【Unity2D游戏开发教程】第1课:2D俯视角角色如何移动?_哔哩哔哩bilibilihttps://www.bilibili.com/video/BV14j411j7Un/?spm_id_from=333.999.0.0&vd_source=d6fc444a0......