01背包相关题

news2025/4/19 10:40:29

 题解:dp[j]表示目标和为j时的最大组合种数

class Solution {
public:
   int dp[1005];
    int findTargetSumWays(vector<int>& nums, int target) {
            int val;
            int sum=0;
            for(int i=0;i<nums.size();i++){
                sum+=nums[i];
            }
            int w=sum+target;
            if(w%2==1)
            {
                return 0;
            }
            else
            {
                 val=w/2;
                if(val<0) return 0;
               

                dp[0]=1;
                for(int i=0;i<nums.size();i++){
                    for(int j=val;j>=nums[i];j--){
                        dp[j]+=dp[j-nums[i]];
                    }
                }
                return dp[val];

            }
    }
};

 

class Solution {
public:
    // int dp[3005];
    int lastStoneWeightII(vector<int>& stones) {
        int sum=0;
       vector<int>dp(3005,0);
        for(int i=0;i<stones.size();i++)
        {
              sum+=stones[i];
        }  
        int x=sum;
        sum=sum/2;
        // memset(dp,0,sizeof(dp));
         for(int i=1;i<=stones.size();i++)
        {
            for(int j=sum;j>=stones[i-1];j--)
            {
                dp[j]=max(dp[j-stones[i-1]]+stones[i-1],dp[j]);
            }
        }
        return abs(x-2*dp[sum]);
        // return 0;
    }
};

 

class Solution {
public:
    int dp[205][20005];
    bool canPartition(vector<int>& nums) {
            int  res=0;
            for(int i=0;i<nums.size();i++){
                res+=nums[i];
            }
            if(res%2==1){
                return false;
            }
            else{
                int n=nums.size();
                int val=res/2;
                // vector<vector<int>> dp(n+1,vector<int>(val+5));
                for(int j=0;j<=val;j++){
                    if(j>=nums[0])
                    {
                        dp[0][j]=nums[0];
                    }
                }
                for(int i=1;i<n;i++)
                {
                    for(int j=0;j<=val;j++)
                    {
                        if(j<nums[i]) dp[i][j]=dp[i-1][j];
                        else{
                              dp[i][j]=max(dp[i-1][j],dp[i-1][j-nums[i]]+nums[i]);
                        }
                      
                    }
                }
                int  w=dp[n-1][val];
                if(w==val)
                {
                    return true;
                }
                else {
                    return false;
                }
            }
    }
};

 

class Solution {
public:
    int dp[105][105];
    int findMaxForm(vector<string>& strs, int m, int n) {
        int N=strs.size();
        vector<int>Mnum(N+5,0);
        vector<int>Nnum(N+5,0);
        for(int i=0;i<strs.size();i++)
        {
            string s1=strs[i];
            for(int j=0;j<s1.size();j++)
            {
                if(s1[j]=='0')
                {
                    Mnum[i]++;
                }
                else
                {
                    Nnum[i]++;
                }
            }   
        }
        memset(dp,0,sizeof(dp));
        for(int i=0;i<N;i++)
        {
            for(int j=m;j>=Mnum[i];j--)
            {
                for(int k=n;k>=Nnum[i];k--)
                {
                    dp[j][k]=max(dp[j-Mnum[i]][k-Nnum[i]]+1,dp[j][k]);
                }
                
            }
        }
        return dp[m][n];

    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/787649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重磅来袭 | 2023数字供应链安全大会邀请函(DSS 2023)

2023数字供应链安全大会&#xff08;DSS 2023&#xff09;将于8月10日在北京国家会议中心隆重开幕。本次大会由悬镜安全主办&#xff0c;ISC互联网安全大会组委会、中国软件评测中心&#xff08;工业和信息化部软件与集成电路促进中心&#xff09;、中国信息通信研究院云计算与…

基于IMX6ULL的智能车载终端项目(代码开源)

前言&#xff1a;本文为手把手教学智能车载终端项目&#xff08;LinuxQT&#xff09;&#xff0c;该项目是综合性非常强的 Linux 系列项目&#xff01;项目核心板使用 NXP 的 IMX6ULL 作为 CPU&#xff0c;整体实现了简化版本的车载终端功能需求。项目可以学习的点非常多&#…

物联网网关模块可以带几台plc设备吗?可以接几个modbus设备?

随着物联网技术的快速发展&#xff0c;物联网网关模块已经成为了实现物联网应用的重要工具。很多客户在选择物联网网关模块时想了解物联网网关模块的设备接入能力&#xff0c;一个物联网网关模块可以带几台PLC设备&#xff1f;可以接几个Modbus设备&#xff1f; 物联网网关模块…

leetcode 50. Pow(x, n)(x的n次方)

求x的n次方。 思路&#xff1a; 第一个想到的思路是x和它自己乘n次&#xff0c; 但是这样做会面临一些问题&#xff1a; 如果是简单的n很小的情况还好&#xff0c;但是可以看到n的取值横跨整个整数范围&#xff0c; 如果n非常大&#xff0c;一次一次乘x效率低是其一。 一般来…

十、数据结构——链式队列

数据结构中的链式队列 目录 一、链式队列的定义 二、链式队列的实现 三、链式队列的基本操作 ①初始化 ②判空 ③入队 ④出队 ⑤获取长度 ⑥打印 四、循环队列的应用 五、总结 六、全部代码 七、结果 在数据结构中&#xff0c;队列&#xff08;Queue&#xff09;是一种常见…

【MySQL】存储引擎(六)

&#x1f697;MySQL学习第六站~ &#x1f6a9;本文已收录至专栏&#xff1a;MySQL通关路 ❤️文末附全文思维导图&#xff0c;感谢各位点赞收藏支持~ 一.引入 大家可能没有听说过存储引擎&#xff0c;但是一定听过引擎这个词&#xff0c;引擎就是发动机&#xff0c;是一个机器…

PCB封装设计指导(十五)验证封装的正确性

PCB封装设计指导(十五)验证封装的正确性 封装建立好之后,我们需要验证封装是否能够正常的放入PCB文件中,最好最直接的办法就是直接放入PCB中来验证。 具体操作如下 任意新建一个空白的PCB文件点击File 选择NEW

搭建关键字驱动自动化测试框架

前言 上篇文章我们已经了解到了数据驱动自动化测试框架是如何构建和驱动测试的&#xff01;那么这篇文章我们将了解关键字驱动测试又是如何驱动自动化测试完成整个测试过程的。关键字驱动框架是一种功能自动化测试框架&#xff0c;它也被称为表格驱动测试或者基于动作字的测试…

一站式解决方案:Qt 跨平台开发灵活可靠

Qt 是一种跨平台开发工具&#xff0c;为开发者提供了一站式解决方案。无论您的项目目标是 Windows、Linux、macOS、嵌入式系统还是移动平台&#xff0c;Qt 都能胜任。这种跨平台的特性不仅节省开支&#xff0c;还推动了战略的快速落地。 适用范围广泛&#xff1a;Qt 可在多种操…

从新手到专业人士:探索 C++ STL 以获得终极性能

探索 C STL 以获得终极性能 博主简介一、引言二、C STL 简介2.1、STL 是什么&#xff1f;2.2、STL 中的常用组件2.3、STL 的优点 三、入门指南&#xff1a;了解基本概念和用法3.1、容器&#xff1a;vector、list、deque、set、map 等3.2、算法&#xff1a;查找、排序、遍历等3.…

C# IO FileStream流(一)使用整理

一、C# IO 文件流&#xff0c;常用操作整理 来自其他开发者的整理&#xff1a; 文件操作常用相关类 1)Directory //操作目录&#xff08;文件夹&#xff09;&#xff0c;静态类。2)Path//静态类&#xff0c;对文件或目录的路径进行操作&#xff08;很方便&#xff09;【字符…

解决Element-Plus中Swtich @change自动被触发的问题

如图所示 这个switchChange事件在初始化的时候会被自动触发 烦得很 解决方法 如图所示 第471行 通过判断是否还有其它某元素再往下执行 如果你有其它方法 请你在评论区教我下哈 3q

智慧园区楼宇合集 | 图扑数字孪生管控系统

智慧园区是指将物联网、大数据、人工智能等技术应用于传统建筑和基础设施&#xff0c;以实现对园区的全面监控、管理和服务的一种建筑形态。通过将园区内设备、设施和系统联网&#xff0c;实现数据的传输、共享和响应&#xff0c;提高园区的管理效率和运营效益&#xff0c;为居…

【MySQL】索引 (八)

&#x1f697;MySQL学习第八站~ &#x1f6a9;本文已收录至专栏&#xff1a;MySQL通关路 ❤️文末附全文思维导图&#xff0c;感谢各位点赞收藏支持~ 一.引入 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。数据库除了存储数据之外&#xff0c;…

Vue异步更新、$nextTick

需求&#xff1a;编辑标题, 编辑框自动聚焦 1. 点击编辑&#xff0c;显示编辑框 2. 让编辑框&#xff0c; 立刻获取焦点 this. isShowEdit true // 显示输入框 this . $refs . inp . focus () // 获取焦点 问题&#xff1a;"显示之后"&#xff0c;立刻获…

Bash编程

目录&#xff1a; bash编程语法bash脚本编写 1.bash编程语法 Bash 编程基础 变量引号数组控制语句函数 Bash 变量 语法&#xff1a; Variable_namevalue Bash 变量定义的规则 变量名区分大小写&#xff0c;a和A为两个不同的变量。变量名可以使用大小写字母混编的形式进行…

淘票猫影城系统-Spring Boot版

文章目录 一、引言TIPSticketcatticketcat-wechat-miniprogramticketcat-web-userticketcat-web-manager 三、项目截图wechat-miniprogramweb-userweb-manager 四、License 前往闪闪の小窝以获得更好的阅读和评论体验 一、引言 项目地址&#xff1a; 项目名项目内容项目地址开…

【Java】String类常用方法总结

文章目录 1丶boolean equals(Object anObject) 方法2丶int compareTo(String s) 方法3、 int compareToIgnoreCase(String str) 方法4丶字符串查找常用方法.5.丶字符串转化常用方法.大小写转换字符串转数组 6丶字符串替换7丶字符串拆分8丶字符串截取9丶去掉左右空格&#xff08…

备战秋招 | 笔试强训14

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、下列有关this指针使用方法的叙述正确的是&#xff08;&#xff09; A. 保证基类保护成员在子类中可以被访问 B. 保证基类私有成员在子类中可以被访问 C. 保证基类共有成员在子类中可以被访问 D.…

机器学习 day31(baseline)

语音识别的Jtrain、Jcv和人工误差 对于逻辑回归问题&#xff0c;Jtrain和Jcv可以用分类错误的比例&#xff0c;这一方式来代替单单只看Jtrain&#xff0c;不好区分是否高偏差。可以再计算人类识别误差&#xff0c;即人工误差&#xff0c;作为基准线Jtrain与baseline对比只高了…