装箱问题的三种解法

有一个箱子容量为V(正整数,0≤v≤20000),同时有n个物品(0< n ≤30),每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。

样例
输入样例
24
6
8
3
12
7
9
7
输出样例
0

方法一:动规

dp[j]表示体积为j用掉的最大体积 

动态转移方程:dp[j]=max(dp[j],dp[j-a[i]]+a[i]);

dp[j-a[i]]+a[i]表示a[i]全部装入

dp[j]表示不放入

#include<iostream>
#include<algorithm>
using namespace std;
int main(){int V,n,i,j;cin>>V>>n;int a[35]={};for(i=0;i<n;i++){cin>>a[i];}int dp[20005]={};for(i=0;i<n;i++){for(j=V;j>=a[i];j--){dp[j]=max(dp[j],dp[j-a[i]]+a[i]);}}cout<<V-dp[V]<<endl;
} 

方法2 回溯

#include<iostream>
#include<algorithm>
using namespace std;
int a[35]={}; 
//maxV表示消耗的最大体积 
int maxV=0,n,V;
//sumV为实际消耗的体积 
//cnt为搜索的第cnt个物品 
void dfs(int cnt,int sumV){if(sumV>V)return;//搜索到最后一个 if(cnt==n+1){if(sumV>maxV)maxV=sumV;return; }//不放入 dfs(cnt+1,sumV);//全部放入 dfs(cnt+1,sumV+a[cnt]);
}
int main(){cin>>V;int i,j;cin>>n; for(i=0;i<n;i++){cin>>a[i]; }dfs(0,0);cout<<V-maxV<<endl;
} 

方法3 贪心

从大到小排序,每次选择可以装入的

#include<iostream>
#include<algorithm>
using namespace std;
//从大到小排序 
int cmp(const void *a,const void *b){return *(int*)b-*(int*)a;
} 
int main(){int V,n,i,j;cin>>V>>n;int a[35]={};for(i=0;i<n;i++){cin>>a[i];}qsort(a,n,sizeof(int),cmp);for(i=0;i<n;i++){if(V==0)break;if(V>=a[i])V-=a[i]; }cout<<V<<endl; 
} 

这样子有局限性,只有数组最大值放入能够使剩余空间最小才满足。

举个例子

数组最大值放入反而得不到剩余空间最小值

用动态规划和回溯均可得到最小剩余空间为0。可见这个贪心策略有局限性。

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

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

相关文章

万物可爬(以爬取浏览器井盖图片为例)

我们以爬取 井盖图片 这个链接中的图片为例&#xff1a; 点击F12 并选中其中一张图片 &#xff0c;得到它的信息。具体如下&#xff1a;我们可以编写对应的正则表达式&#xff1a; <img[^>]*src"(.*?)"[^>]*alt"井盖图片 的图像结果"[^>]*&g…

【AI系统】轻量级CNN模型新进展

CNN 模型小型化&#xff08;下&#xff09; 在本文会接着介绍 CNN 模型的小型化&#xff0c;除了第二篇文章提到的三个模型外&#xff0c;在本章节会继续介绍 ESPNet 系列&#xff0c;FBNet 系列&#xff0c;EfficientNet 系列和 GhostNet 系列。 ESPNet 系列 ESPNetV1 ESP…

Day06:缓存持久化

缓存持久化 redis做为缓存&#xff0c;数据的持久化是怎么做的&#xff1f; 在Redis中提供了两种数据持久化的方式&#xff1a;1、RDB 2、AOF 方式一&#xff1a;RDB RDB(Redis Database Backup file)&#xff0c;redis数据备份文件&#xff0c;也叫Redis数据快照&#xff…

msvcr100.dll 文件缺失要怎么解决?msvcr100.dll的多少修复方法分析

面对 msvcr100.dll 文件缺失引发的应用程序运行问题&#xff0c;实际上解决方案并不复杂。本文将提供几种直接有效的修复方法&#xff0c;帮助你迅速恢复文件完整性&#xff0c;确保应用程序能够顺利运行&#xff0c;从而轻松克服这一技术障碍。 一.msvcr100.dll主要特性和功能…

【机器学习】机器学习的基本分类-监督学习-梯度提升树(Gradient Boosting Decision Tree, GBDT)

梯度提升树是一种基于**梯度提升&#xff08;Gradient Boosting&#xff09;**框架的机器学习算法&#xff0c;通过构建多个决策树并利用每棵树拟合前一棵树的残差来逐步优化模型。 1. 核心思想 Boosting&#xff1a;通过逐步调整模型&#xff0c;使后续的模型重点学习前一阶段…

什么是CMMI

CMMI的定义与目的 CMMI&#xff08;Capability Maturity Model Integration&#xff0c;即能力成熟度模型集成模型&#xff09;是一种用于评估和改进组织在软件开发、系统集成、项目管理等方面过程能力的框架。它旨在帮助组织识别其当前的过程能力水平&#xff0c;并提供一个路…

MySQL 入门大全:常用函数

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

动态风景构图技巧和方法

拍摄时要有耐心 当遇到绝佳的拍摄场景时&#xff0c;要放慢脚步&#xff0c;慢慢来&#xff0c;给自己时间去感受它。可能会有一个显而易见的构图方式&#xff0c;你可以先按这个方式拍摄&#xff0c;但随后也要花点时间找找其他可能的构图。 光线会直接影响构图&#xff0c;…

RabbitMq死信队列延迟交换机

架构图 配置 package com.example.demo.config;import org.springframework.amqp.core.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class DeadLetterConfig {public String …

Sringboot项目实现文件上传至linux指定目录

本篇文章讲述一个springboot项目如何实现一个文件上传接口&#xff0c;涉及vsftpd服务、SSH协议以及对linux系统的一些配置。 一、springboot工程部分 本篇文章略过springboot创建过程&#xff0c;具体见之前发过的文章 1.1在pom.xml中添加SFTP&#xff08;SSH 文件传输协议…

电气自动化 基于PLC工业机器人视觉定位及自动码垛系统的设计

摘要 随着我国经济的不断发展&#xff0c;工业机器人将会得到更多的应用&#xff0c;从而达到整个行业的自动化和高速度。由于生产效率的不断提升&#xff0c;对成品进行检验、加工、分级等工作尤为关键。工业机器人是一种高科技的机械设备&#xff0c;它被广泛地运用于焊接、…

云数据库 OceanBase

OceanBase 是阿里巴巴集团自主研发的一款分布式关系型数据库。它采用了分布式架构&#xff0c;能够在大规模、复杂环境下处理海量数据。OceanBase 旨在解决传统数据库在高并发、大规模数据和高可用性场景下的瓶颈&#xff0c;尤其适用于金融、电商、物流等需要高性能、高可靠的…

数据库性能诊断工具DBdoctor 产品介绍

基本信息 DBdoctor是一款专注于数据库性能的生态软件&#xff0c;致力于解决一切数据库性能问题&#xff0c;实现DB AGI。行业首次将eBPF技术聚焦在数据库领域&#xff0c;创新性实现性能可观测。 功能介绍 1.核心功能 SQL审核&#xff0c;性能评估&#xff1a; 独家SQL性能…

AIGC与医学统计学的完美融合:打造智能医疗新时代

文章目录 一、理解统计学基础概念二、掌握描述性统计方法三、学习假设检验方法四、掌握回归分析方法五、学习生存分析方法六、利用现代技术和工具七、注重实践和应用《医学统计学从入门到精通》亮点内容简介作者简介目录获取方式 在AIGC&#xff08;人工智能生成内容&#xff0…

【git reset】本地下载特定历史提交哈希值的github文件【未联网服务器】进行git reset操作

本地电脑下载git文件&#xff0c;并进行git reset操作 问题描述&#xff1a;解决方法&#xff1a;方法1&#xff1a;直接下载特定版本的github压缩包。方法二&#xff1a; 在本地windows电脑上安装git工具进行git reset版本回退&#xff0c;之后上传相应版本的压缩包到服务器上…

emacs 折腾日记(一)——序言

初次知道emacs这个东西是在《程序员的呐喊》这本书。书中的作者提倡学习编译原理&#xff0c;推崇emacs。现在距离我知道emacs已经过去了快8年&#xff0c;期间不断的重复学习——放弃——学习的路子。与过去学习vim类似&#xff0c;vim我也经历过放弃到学习&#xff0c;最后有…

Django基础cookie和session

1.会话跟踪 ​ 什么是会话&#xff01;可以把会话理解为客户端与服务器之间的一次会晤&#xff0c;在一次会晤中可能会包含多次请求和响应。例如给10086打个电话&#xff0c;你就是客户端&#xff0c;而10086服务人员就是服务器。从双方接通电话那一刻起&#xff0c;会话就开始…

EMC测试——RE、CE、ESD

①辐射发射测试(RE)&#xff1a;评估电子、电气产品或系统在工作状态下产生的电磁辐射干扰程度&#xff0c;确保其不会干扰其他电子设备&#xff0c;同时可以确保产品的电磁辐射水平在安全范围内&#xff0c;从而保护用户免受电磁辐射的危害。消费类常见测试标准&#xff1a;EN…

iOS平台接入Facebook登录

1、FB开发者后台注册账户 2、完善App信息 3、git clone库文件代码接入 4、印尼手机卡开热点调试 备注&#xff1a; 可能遇到的问题&#xff1a; 1、Cocos2dx新建的项目要更改xcode的git设置&#xff0c;不然卡在clone&#xff0c;无法在线获取FBSDK 2、动态库链接 需要在…

解决 PyTorch 中的 AttributeError: ‘NoneType‘ object has no attribute ‘reshape‘ 错误

这里写目录标题 一、错误分析二、错误原因三、解决方案1. 检查损失函数2. 检查前向传播3. 检查 backward 函数4. 检查梯度传递 四、前向传播与反向传播1. 前向传播2. 反向传播3. 自定义 backward 函数示例反向传播过程&#xff1a;常见的错误&#xff1a;1&#xff1a;损失函数…