首页 > 试题广场 >

资产包打包

[编程题]资产包打包
  • 热度指数:3398 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
在金融资产交易中,经常涉及到资产包的挑选打包。在资产包打包过程中,每种类型的资产有固定的数量与价值,需选择某几种资产打包,使得资产包总价值最大。打包时每种资产只能整体打包,不能分割。假设现有可容纳M条资产的资产包,另外有N种资产。资产Na数量为Ta条,总价值为Va元;资产Nb数量为Tb条,总价值为Vb元;资产Nc数量为Tc条,总价值为Vc元......;资产Nn数量为Tn,总价值为Vn。编写算法,挑选哪些类型资产放入资产包可使得资产包总价值最大?

输入描述:
资产总量,资产种类,每类资产条数,每类资产价值(逗号分隔);其中每类资产条数与每类资产价值为空格分隔。
总格式如下:
资产总量,资产种类,资产A条数 资产B条数 资产C条数,资产A价值 资产B价值 资产C价值!
举例,资产总量为12,资产种类3种,3种资产条数分别为4,5,7,三种资产价值分别是500元,600元,800元,输入如下:
12,3,4 5 7,500 600 800
资产总量和资产种类都不超过1000,资产条数不超过1000,资产价值不超过10000,所有数值均为正整数。


输出描述:
资产包中资产最大总价值
示例1

输入

12,3,4 5 7,500 600 800

输出

1400
头像 牛客题解官
发表于 2020-06-05 16:15:22
题解 题目难度:中等 知识点:字符、动态规划、数组、递归、记忆化搜索 方法(一)动态规划 解析问题:本题可以分析为典型的01背包问题,使用动态规划就可以解决问题。在分析问题时,主要解析为以下三步。第一步:确定【状态】和【选择】。在本题中,【状态】就是“剩余的空间大小总和”和“可选择的资产”,【选择】 展开全文
头像 哔哔波比波比
发表于 2022-09-13 17:03:29
# format input arr = list(input().split(',')) M = int(arr[0]) n = int(arr[1]) weight = list(map(int, 展开全文