博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1014 装箱问题——http://codevs.cn/problem/1014/
阅读量:5193 次
发布时间:2019-06-13

本文共 791 字,大约阅读时间需要 2 分钟。

第一部分:题目

题目描述 
Description

有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。

要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。

输入描述 
Input Description

一个整数v,表示箱子容量

一个整数n,表示有n个物品

接下来n个整数,分别表示这n 个物品的各自体积

输出描述 
Output Description

一个整数,表示箱子剩余空间。

样例输入 
Sample Input

24

6

8

3

12

7

9

7

样例输出 
Sample Output

0

第二部分:思路

开始以为只要把数从小到大排列然后从大的开始装一直到不能装为止就能得到结果。然后就WA了。比如10 4 3 5 4  8.结果应该是1,但是这样的想法得出的是2.然后就想到了动态规划(虽然题目写的就是动态规划类,本想偷点懒。。。)就是使用递归慢慢装,然后判断,结果TLE(超时)了。然后发现:直接递归的话,重复了好多操作,比如10 4 3 5 4 8.先把3 5 4 8按从大到小排序:3 4 5 8.就会重复计算8 +5、5+8.当数比较多的时候就会超时。这里需要添加一个细节:从当前数开始继续加后面的数。就可以避免重复计算了。然后就AC了。

第三部分:代码

#include
int sum=0,take[30],length=0,max=0;//take 数组用来存储已经装进包里的数的位置。避免重复添加 void paixu(int s[30],int len)//从大到小排序 { int i,j,t; for(i=0;i

 

转载于:https://www.cnblogs.com/xiangguoguo/p/5381463.html

你可能感兴趣的文章
决策树C4.5算法——计算步骤示例
查看>>
【转】Android Activity和Intent机制学习笔记----不错
查看>>
改变分辨率
查看>>
安装使用zookeeper
查看>>
【dlbook】数学基础
查看>>
函数绑定之call()、apply()及bind()
查看>>
一些备忘
查看>>
线段树(维护最大值):HDU Billboard
查看>>
高等数学(拉格朗日乘子法):NOI 2012 骑行川藏
查看>>
Linux移植之子目录下的built-in.o生成过程分析
查看>>
QMediaPlaylist保存播放列表
查看>>
JMS的独立使用
查看>>
Github地址
查看>>
基于Pyecharts V1.x.x的数据可视化(一)
查看>>
ETERM信息发送接收
查看>>
wordpress上下篇
查看>>
【10】了解Bootstrap栅格系统基础案例(5)
查看>>
数据结构 | 双向链表简单实现及图示
查看>>
024
查看>>
转载:Spark GraphX详解
查看>>