博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【动态规划】简单背包问题II
阅读量:5283 次
发布时间:2019-06-14

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

问题 B: 【动态规划】简单背包问题II

时间限制: 1 Sec  内存限制: 64 MB
提交: 21  解决: 14
[][][]

题目描述

张琪曼:“为什么背包一定要完全装满呢?尽可能多装不就行了吗?”
李旭琳:“你说得对,这和墨老师曾告诉我们的‘日中则昃,月满则亏’是一个道理。”所以,现在的问题是,她们有一个背包容量为v(正整数,0≤v≤20000),同时有n个魔法石(0≤n≤30),每个魔法石有一个体积 (正整数)。要求从n个魔法石中,任取若干个装入包内,使背包的剩余空间为最小。

输入

第一行为一个整数,表示背包容量,第二行为一个整数,表示有n个魔法石,接下来n行,分别表示这n个魔法石的各自体积。

输出

只有一个整数,表示背包剩余空间。

样例输入

24     6      8      312797

样例输出

0 代码:
1 #include
2 #include
3 #include
4 5 using namespace std; 6 7 int dp[35][20005]; 8 9 int main(){10 int T;11 int M;12 int t[20005];13 int p[20005];14 while(scanf("%d %d",&T,&M)!=EOF){15 for(int i=0;i<=M;i++){16 for(int j=0;j<=T;j++){17 dp[i][j]=0;18 }19 }20 dp[0][0]=0;21 for(int i=1;i<=M;i++){22 scanf("%d",&t[i]);23 }24 for(int i=1;i<=M;i++){25 for(int j=1;j<=T;j++){26 if(j>=t[i]){27 dp[i][j]=max(dp[i-1][j],dp[i-1][j-t[i]]+t[i]);28 }else{29 dp[i][j]=dp[i-1][j];30 }31 }32 }33 34 printf("%d\n",T-dp[M][T]);35 }36 return 0;37 }

 

 

转载于:https://www.cnblogs.com/TWS-YIFEI/p/5773968.html

你可能感兴趣的文章
cs20_3-3
查看>>
codevs1074 食物链
查看>>
少量标签下的模型
查看>>
17.python购物车程序作业
查看>>
lightoj 1027【数学概率】
查看>>
Apparmor——Linux内核中的强制访问控制系统
查看>>
HOJ-1005 Fast Food(动态规划)
查看>>
jQuery 杂项方法
查看>>
系出名门Android(4) - 活动(Activity), 服务(Service), 广播(Broadcast), 广播接收 器(BroadcastReceiver)...
查看>>
Dynamics CRM Microsoft SQL Server 指定的数据库具有更高的版本
查看>>
FasfDFS整合Java实现文件上传下载
查看>>
love2d教程5--摄相机1视角跟随玩家
查看>>
用Hadoop构建电影推荐系统
查看>>
Linux命令1——a
查看>>
紫书 悲剧文本(链表)
查看>>
分析Sqlserver与access数据库sql语法的10大差异
查看>>
10 class封装 ORM
查看>>
CSS小笔记
查看>>
JAVA作业 04 类与对象
查看>>
网络攻防实验二
查看>>