【刷题篇】动态规划-完全背包问题(十一)

文章目录

  • 1、完全背包
  • 2、零钱兑换
  • 3、零钱兑换 II
  • 4、完全平方数

1、完全背包

在这里插入图片描述

在这里插入图片描述

#include <iostream>
#include<vector>
using namespace std;int main()
{int n,v;cin>>n>>v;vector<int> V(n+1);vector<int> W(n+1);for(int i=1;i<=n;i++){cin>>V[i]>>W[i];}vector<int> dp(v+1);vector<int> dp1(v+1);//(1)求这个背包至多能装多大价值的物品?for(int i=1;i<n+1;i++){for(int j=V[i];j<v+1;j++){dp[j]=max(dp[j],dp[j-V[i]]+W[i]);}}cout<<dp[v]<<endl;//(2)若背包恰好装满,求至多能装多大价值的物品?//体积凑不了正好的时候就是等于-1for(int i=1;i<v+1;i++)dp1[i]=-0X3f3f3f3f;for(int i=1;i<n+1;i++){for(int j=V[i];j<v+1;j++){dp1[j]=max(dp1[j],dp1[j-V[i]]+W[i]);}}cout<<(dp1[v]<0?0:dp1[v])<<endl;return 0;
}

2、零钱兑换

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。
计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。
你可以认为每种硬币的数量是无限的。
在这里插入图片描述

class Solution {
public:int coinChange(vector<int>& coins, int amount) {int n=coins.size();vector<int> dp(amount+1);int INF=0x3f3f3f3f;for(int j=1;j<amount+1;j++)dp[j]=INF;for(int i=1;i<n+1;i++){for(int j=coins[i-1];j<amount+1;j++)dp[j]=min(dp[j],dp[j-coins[i-1]]+1);}return dp[amount]>=INF?-1:dp[amount];}
};

3、零钱兑换 II

给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。
请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。
假设每一种面额的硬币有无限个。
题目数据保证结果符合 32 位带符号整数。
在这里插入图片描述

class Solution {
public:int change(int amount, vector<int>& coins) {int n=coins.size();vector<int> dp(amount+1);dp[0]=1;for(int i=1;i<n+1;i++){for(int j=coins[i-1];j<amount+1;j++)dp[j]+=dp[j-coins[i-1]];}return dp[amount];}
};

4、完全平方数

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。
在这里插入图片描述

class Solution {
public:int numSquares(int n) {int s=sqrt(n);int INF=0x3f3f3f3f;vector<int> dp(n+1);for(int j=1;j<n+1;j++)dp[j]=INF;for(int i=1;i<s+1;i++){for(int j=i*i;j<n+1;j++)dp[j]=min(dp[j],dp[j-i*i]+1);}return dp[n];}
};

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OMG 一个方法的调用改动居然优化了一倍性能!!! ConcurrentHashMap.computeIfAbsent 学习

背景 前提&#xff1a;抖音小程序有qps的监控&#xff0c;如果说qps过低就会导致小程序被下架掉。 业务代码非常的简单 一个easy的查询 但是当并非达到 20就 会发现qps降低了10倍 业务需求实现大概这么一个链路 ok 那么此前我们在认识一下 computeIfAbsent 方法&#xff08;大…

Spring6 当中 Bean 的生命周期的详细解析:有五步,有七步,有十步

1. Spring6 当中 Bean 的生命周期的详细解析&#xff1a;有五步&#xff0c;有七步&#xff0c;有十步 文章目录 1. Spring6 当中 Bean 的生命周期的详细解析&#xff1a;有五步&#xff0c;有七步&#xff0c;有十步每博一文案1.1 什么是 Bean 的生命周期1.2 Bean 的生命周期 …

AWTK 集成 OGRE 3D 图形引擎

本项目演示了如何在 AWTK 中集成 OGRE3D。 0. 准备 先编译 AWTK, 并在 env.sh 中设置 awtk 的路径。需要安装 cmake 1. 生成资源 python scripts/update_res.py all2. 编译 设置环境变量 source env.sh source env_rt.sh编译 ogre 库 cd 3rd build_assimp.sh build_ogre.…

环形链表题

1.环形链表1 看题&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路1&#xff1a;哈希表 遍历所有节点&#xff0c;每次遍历一个节点时&#xff0c;判断该节点是否被访问过。 可以使用哈希表来存储所有已经访问过的节点。每次到达一个节点&#xff0c;如果该节点已…

win10安装DHCP服务--用于2台机器之间搭建简易网络来进入目标机器修改配置

前言&#xff1a; 客户多了&#xff0c;往往会出现各种突发情况。 比如一个客户现场没有DHCP&#xff0c;没有显示器&#xff0c;键盘。 你只有一台笔记本的情况下要配置目标机器的网络。要如何配置&#xff1f;&#xff1f; 这时候就可以使用这篇博客提供的方式了。 Windows…

http1.1和http2.0的同源请求数限制

判断协议版本 :scheme: 在请求头中表示使用的是HTTP/2协议。即 出现 :开头的请求头Chrome 只支持查看 HTTP/1.x 的 Raw Headers&#xff0c;对这种请求&#xff0c;会给出 view source 选项。HTTP2.0不给出。可继续学习 https://www.cnblogs.com/kirito-c/p/10360868.html抓包…

update_min_vruntime()流程图

linux kernel scheduler cfs的update_min_vruntime() 看起来还挺绕的。含义其实也简单&#xff0c;总一句话&#xff0c;将 cfs_rq->min_vruntime 设置为&#xff1a; max( cfs_rq->vruntime, min(leftmost_se->vruntime, cfs_rq->curr->vruntime) )。 画个流…

沐风老师3DMAX一键生成桌子插件TableMaker使用方法

3DMAX一键生成桌子插件TableMaker使用教程 3DMAX一键生成桌子插件TableMaker&#xff0c;参数化方式快速创建各种样式桌子模型。 【适用版本】 3dMax2011-2025&#xff08;不仅限于此范围&#xff09; 【安装方法】 3DMAX一键生成桌子插件无需安装&#xff0c;使用时直接拖动…

Electron+Vue3+Vite+ElectronForge整合 - 一键启动两个服务 一键打包两个服务

说明 本文介绍一下 Electron Vue3 Vite Electron Forge 的高级整合操作。vue3 : 使用 TS 的语法开发&#xff1b; Electron : 使用 JS 的语法开发。本文将从项目初始化开始&#xff0c;一步一步的完成项目的启动、打包全流程的介绍。实现的效果是 &#xff1a; 1、一个正常…

一个好用的MQTT客户端软件

软件功能如下&#xff0c;实现的协议版本是 3.1.1 仅实现了常用的 CONNECT , PUBLISH , SUBSCRIBE 及相应的应答报文。支持以 Hex 格式显示接收的原始报文&#xff08;方便初学者学习&#xff09;。支持所有字段的自定义配置。支持保存与加载配置文件。 软件界面如下所示&…

惠普M1136经常卡纸然后报错E0故障检修

惠普M1136显示故障码E0可能意味着打印机出现了传感器问题。传感器是负责检测纸张进出的装置&#xff0c;如果传感器出现问题&#xff0c;可能会导致打印机无法正确识别纸张&#xff0c;出现卡纸、断纸等问题&#xff0c;也可能会导致硒鼓无法正常运行&#xff1b;E0故障码通常表…

高效管理微信客户的三个方法,你掌握了吗?

随着互联网的发展&#xff0c;越来越多的人开始在微信上和客户进行交流&#xff0c;维护与客户的关系。 今天&#xff0c;就给大家分享三个高效管理微信客户的方法&#xff0c;让大家能更好地维护客户。 1、备注详细的资料 通过为每个客户添加详细的备注信息&#xff0c;我们…