ALGO-22_蓝桥杯_算法训练_装箱问题(DP)
2024-08-29 16:10:22
问题描述
有一个箱子容量为V(正整数,<=V<=),同时有n个物品(<n<=),每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
输入格式
第一行为一个整数,表示箱子容量;
第二行为一个整数,表示有n个物品;
接下来n行,每行一个整数表示这n个物品的各自体积。
输出格式
一个整数,表示箱子剩余空间。
样例输入
样例输出
记:
一开始使用的思路有点像dfs,不符合动态规划的思想
故上网查阅他人的代码
(代码参考:https://blog.csdn.net/s2637281620/article/details/63251166)
学习到了滚动数组的使用,拓展了动态规划的解题思路
AC代码:
#include <stdio.h>
#define LEN 20000 int v,n;
int use[LEN+] = {};
int ans[LEN+] = {}; void init()
{
int i;
scanf("%d",&v);
scanf("%d",&n);
for (i = ; i <= n ; i ++)
{
scanf("%d",&use[i]);
}
return ;
} void dp()
{
int i,j;
for (i = ; i <= n ; i ++)/*遍历物品的体积*/
{
/*
在允许范围内,
将当前物品加入到箱子中,
若加入后的体积大于原值,则加入物品,并更新值
*/
for (j = v ; j >= use[i] ; j --)
{
if (ans[j-use[i]] + use[i] > ans[j])
{
ans[j] = ans[j-use[i]] + use[i];
}
}
}
return ;
} int main(void)
{
init();
dp();
printf("%d",v-ans[v]);
return ;
}
最新文章
- vijos1741 观光公交 (贪心)
- 【转】DNS记录类型介绍(A记录、MX记录、NS记录等)
- 探索javascript----获得节点计算后样式
- DEV主从表
- Maven使用笔记(四)pom.xml配置详解
- 使用NPOI将数据库里信息导出Excel表格并提示用户下载
- ios富文本的简单使用 AttributedString
- java学习笔记之字符流文件复制
- python 编码规范整理
- C语言 &#183; 8皇后问题
- PCB (4)原理图导入PCB
- 广商博客沖刺第一天(new ver):
- 微软BI 之SSIS 系列 - 理解Data Flow Task 中的同步与异步, 阻塞,半阻塞和全阻塞以及Buffer 缓存概念
- 虚拟机中安装linux系统步骤
- spring p 标签
- 基本控件文档-UIKit结构图
- Unix IPC之Posix信号量实现生产者消费者
- 【常见CPU架构对比】维基百科
- Linux的磁盘分区(一)
- 九度OJ 1031:xxx定律 (基础题)