01背包相关题

news/2024/11/17 6:34:23/

 题解: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.ppmy.cn/news/977650.html

相关文章

打开Android device monitor

X:\assdk\tools monitor.bat 双击 更新到最新

24考研数据结构-线性表4

目录 2.4.4单链表的查找操作&#xff08;默认带头节点&#xff0c;不带头节点后续更新&#xff09;2.4.4.1 按位查找操作2.4.4.2 按值查找操作2.4.4.3 求单链表的长度&#xff08;带和不带头节点都写了&#xff09;2.4.4.4 知识回顾与重要考点 2.4.5 单链表的创建操作2.4.5.1 头…

java中的锁:Synchronized的四种状态(无锁、偏向锁、轻量级锁、重量级锁)

1、什么是Synchronized? Synchronized是java中的关键字,是一种同步锁。它修饰的对象有以下几种&#xff1a;(类, 方法, 代码块) synchronized可以保证方法或代码块在运行时&#xff0c;同一时刻只有一个线程可以进入到临界区&#xff08;互斥性&#xff09;所以它也是排它锁…

数据仓库设计理论

数据仓库设计理论 一、数据仓库基本概念 1.1、数据仓库介绍 数据仓库是一个用于集成、存储和分析大量结构化和非结构化数据的中心化数据存储系统。它旨在支持企业的决策制定和业务分析活动。 1.2、基本特征 主题导向&#xff1a;数据仓库围绕特定的主题或业务领域进行建模…

【玩转Linux】文件的一些概念

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

【VCS】(5)Fast RTL-level Verification

Fast RTL-level Verification General Coding GuidlinesLab --- simprofile$display() 输出彩色内容 前面的内容都是在说怎样进行仿真和验证&#xff0c;即如何使用 VCS 。 但是&#xff0c;仿真和验证是不是也有所讲究&#xff1f; 有没有一些标准来衡量设计代码和验证代码的质…

Windows环境Docker安装

目录 安装Docker Desktop的步骤 Docker Desktop 更新WSL WSL 的手动安装步骤 Windows PowerShell 拉取&#xff08;Pull&#xff09;镜像 查看已下载的镜像 输出"Hello Docker!" Docker Desktop是Docker官方提供的用于Windows的图形化桌面应用程序&#xff0c…

线程系列 7 - JUC高并发容器类

线程系列 7 - JUC高并发容器类 1、JUC高并发容器1.1、为什么需要JUC高并发容器1.2、什么是 JUC 高并发容器1.3、CopyOnWriteArrayList1.4、BlockingQueue1.4.1、阻塞队列的常用方法1.4.2、ArrayBlockingQueue1.4.3、LinkedBlockingQueue1.4.4、DelayQueue1.4.5、PriorityBlocki…