面试题:有一个箱子容积为v,同时有n个物品,每个物品有一个体积。要求从n个物品中,任取若干个装入箱内,使箱子的剩余空间最小。

2023-11-07

面试题

有一个箱子容积为v,同时有n个物品,每个物品有一个体积。要求从n个物品中,任取若干个装入箱内,使箱子的剩余空间最小。

输入

箱子的容积 v
物品个数 n
每个物品占的空间 x1,x2…xn

输出

最小剩余空间 s

解题思路

背包类动态规划问题,假设若当前背包现容纳体积为j,此时若将物品i放入到背包中则容器中容纳状态为dp[j-n[i]] + n[i],其中dp[j-n[i]]代表背包放置物品i之前的容量,n[i]就代表x1~xn中的某一个物品所占的空间,若该物品i未放入背包中,则容量状态不变为dp[j],由此可得出动态转移方程 dp[j] = max(dp[j],dp[j-n[i]] + n[i]),在此过程中需要遍历每一个物品找到最优解

  • 以下代码在最新C++规则中不支持,数组大小必须定义为常量,可通过指针类型new开辟数组,使用指针进行操作

题解

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vld.h>
using namespace std;
int main()
{
	int v,n;
	cout << "请输入体积:";
	cin >> v;
	cout << "请输入物品个数:";
	cin >> n;
	int box[n] = {};
	cout << "初始化物品体积:";
	for(int i = 0;i<n;i++)
	{
		cin >> box[i];
	}
	int dp[v+1] = {0};//表示容积为v时可放置物品的容量
	for(int i = 0;i < n; i++)
	{
		for(int j = v ;j > box[i]; j--)
		{
			dp[j] = max(dp[j],dp[j-box[i]] + box[i])
		}
	}
	cout<<v-dp[v];
	system("pause");
	return 0;
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试题:有一个箱子容积为v,同时有n个物品,每个物品有一个体积。要求从n个物品中,任取若干个装入箱内,使箱子的剩余空间最小。 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 重载<<的返回值

    include
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • 10个python入门小游戏,零基础打通关,就能掌握编程基础

    不会python就不能用python开发入门级的小游戏 当然不是 我收集了十个python入门小游戏的源码和教程 并且即使你没有python基础 只要跟着这十个小游戏的开发详细教程去做 以及有了全部的源码 那就能自己开发出这样十个pytho
  • andriod build system

    1 入口 build core main mk 2 build core base rules mk 3 AndriodProducts mk 在原生的bulid system里面会 吧所有的改名字的 makefile都 inlucde进去
  • 云服务器被攻击了,怎么处理比较合适,你的服务器在发生什么

    云服务器遭受攻击时可能会出现以下问题 服务器瘫痪 攻击者可能会使用分布式拒绝服务 DDoS 攻击来使服务器无法响应请求 从而导致网站或应用程序无法正常运行 数据泄露 攻击者可能会窃取服务器上的敏感数据 例如用户名 密码或个人信息 服务器被入
  • 怎么使用Groovy+Spock做单元测试?

    1 背景 平时我们写代码 免不了要进行一些测试 如果没有使用单元测试 对于简单的程序 我们可以写一个main方法 调试查看指定的方法是否符合预期 对于一个服务系统 我们可以使用PostMan等工具来模拟一下真实请求 查看输入输出是否符合预期
  • adb命令卸载(系统app)遇到:Failure [DELETE_FAILED_DEVICE_POLICY_MANAGER]

    普通卸载 所有软件的包名 adb shell pm list packages 卸载命令 adb uninstall 包名 Failure DELETE FAILED INTERNAL ERROR 之后rm apk卸载 貌似只能一次卸载一个
  • 聊聊运算放大器---施密特与迟滞比较器

    很多人把施密特触发器与迟滞比较器混为一谈 以为是一样的东西 其实不然 虽然二者都是带有2个门限的正反馈比较器 还是有具体区别的 1 施密特触发器可以买到专用的芯片 如74HC14 其门限电压UT UT 是固定值 注意均为正电压 2 迟滞触发
  • KubeSphere 社区双周报

    KubeSphere 从诞生的第一天起便秉持着开源 开放的理念 并且以社区的方式成长 如今 KubeSphere 已经成为全球最受欢迎的开源容器平台之一 这些都离不开社区小伙伴的共同努力 你们为 KubeSphere 提出了很多建设性意见
  • Vue基础之模板语法介绍

    目录 前言 一 插值 二 指令 三 过滤器 四 计算属性和监听属性 五 vue实现购物车案例 前言 上篇我分享了关于Vue的入门 简单的入了个门 本篇文章将要分享的内容为Vue的模板语法 一 插值 1 1 文本 1 2 html 1 3 属
  • 大数据基础——MySql篇

    MySql 什么是数据库 数据库 保存数据的仓库 他在电脑中是一个文件系统 然后把数据都保存在这些特殊的文件中 并且使用固定的语言 SQL语言 去操作文件中的数据 数据库就是按照数据结构来组织 存储和管理数据的建立在计算机存储设备上的仓库
  • 数据库面试

    数据库知识点 是否了解内存数据库 顾名思义就是将数据放在内存中直接操作的数据库 相对于磁盘 传统的数据库管理系统把所有数据都放在磁盘上进行管理 所以称做磁盘数据库 内存的数据读写速度要高出几个数量级 因此内存数据库的最大特点就是性能好 速度
  • 让CPU画出图形(其实很简单的)

    本例子是当初微软的一个题目 希望windows任务管理器的CPU的占有率 是一个正旋曲线 如果是你 你会如何解决这个问题呢 先上图吧 由于cpu要处理其他电脑程序 只能画出来大概的模样 其实我当时想这个问题时候 是不是考虑对cpu进行操作
  • JS中Symbol的介绍

    1 引入Symbol类型的背景 ES5 的对象属性名都是字符串 这容易造成属性名冲突的问题 举例 使用别人的模块 对象 又想为之添加新的属性 这就容易使得新属性名与原有属性名冲突 2 Symbol类型简介 symbol是一种原始数据类型 其
  • 计算机网络---第五章传输层---UDP

    1UDP的端口号是53 需要应用层提供可靠性服务 2网络层的复分用指的是协议 传输层的复分用指的是进程 3UDP首部为8B 伪首部长度为12B 5使用UDP协议的原因在于要找到目的进程以及更加可靠 6IP电话实时媒体会议流媒体使用UDP 7
  • MySQL复习

    MySQL学习 1 初始MySQL 1 1 什么是数据库 数据库 DB BataBase 作用 存储数据 管理数据 1 2 数据库分类 关系型数据库 SQL MySQL Oracle sql Server 各个表之间 表中行和列之间的关系进
  • js对象属性的命名规范

    1 首先 我们要知道 js对象属性命名有三种方法 1 对象字面量形式命名 这时的属性 可以是任意的字符串 包括空串和空格字符串 也可以是js的变量形式 即以字母 下划线 开头 后面跟字母 数字 下划线和 还可以是纯数字 let obj a1
  • 华为服务器imana安装系统,华为服务器imana配置

    华为服务器imana配置 内容精选 换一换 当前 越来越多的软件采用微服务架构 构建一个产品时会大量使用微服务 不同微服务之间访问时涉及到域名访问 拥有自建IDC的企业 在使用CCE时通常需要在CCE集群与自建IDC之间通信 而且当IDC有
  • Python+Django实现基于人脸识别的门禁管理系统,附带源码!!

    已下项目为实战开发经验 微信搜索关注公众号 python语言空间 获取更多项目源码及资源 项目介绍 基于人脸识别的门禁管理系统 Python Django RESTframework JsonWebToken Redis Dlib 该项目为
  • redhat 红帽7.8安装教程(图文超详细)

    1 打开vm创建 点击创建虚拟机 选择Linux 红帽7系列版本 这个网络类型无所谓 后期还可以改 方向键上下来控制选择第一个 然后按enter Ctrl Alt可以把光标从虚拟机中拉出来 后边还需要创建新的一个用户 密码需要有高安全性
  • 一、在linux下安装jenkins

    前提 在linux中已经安装了jdk 1 安装jenkins的方式一 直接使用命令下载 官网 https pkg origin jenkins io redhat sudo wget O etc yum repos d jenkins re
  • 面试题:有一个箱子容积为v,同时有n个物品,每个物品有一个体积。要求从n个物品中,任取若干个装入箱内,使箱子的剩余空间最小。

    面试题 有一个箱子容积为v 同时有n个物品 每个物品有一个体积 要求从n个物品中 任取若干个装入箱内 使箱子的剩余空间最小 输入 箱子的容积 v 物品个数 n 每个物品占的空间 x1 x2 xn 输出 最小剩余空间 s 解题思路 背包类动态