博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1114 完全背包+判断能否装满
阅读量:6981 次
发布时间:2019-06-27

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

题意 给出一个存钱罐里的钱币重量 给出可能的n种钱币重量以及价值 求存钱罐中钱币的最小价值 若不可能另有输出

在裸的完全背包上加了一点东西 即判断这个背包能否被装满

初始化 dp[0]=0 其余的都使用for循环设置成INF 以达到求min的目的

最后如果dp[v]还是那么大就说明它根本没有通过前面的方式被改变 即 不能被装满

#include
#include
#include
#include
#include
using namespace std;int e,f;int val[505];int vol[505];int dp[10050];int main(){int t;scanf("%d",&t);while(t--){ scanf("%d%d",&e,&f); int v=(f-e); int n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d",&val[i],&vol[i]); } dp[0]=0; for(int i=1;i<=v;i++) { dp[i]=500000000; } for(int i=1;i<=n;i++) { for(int k=vol[i];k<=v;k++) { dp[k]=min(dp[k],dp[k-vol[i]]+val[i]); } } if(dp[v]==500000000) { printf("This is impossible.\n"); } else printf("The minimum amount of money in the piggy-bank is %d.\n",dp[v]);}}

  

 

转载于:https://www.cnblogs.com/rayrayrainrain/p/5309210.html

你可能感兴趣的文章
快速构建Windows 8风格应用28-临时应用数据
查看>>
DVWA系列之12 利用Burpsuite进行暴力破解
查看>>
华为VRRP(不同vlan之间的冗余备份)
查看>>
单片机数码管码段
查看>>
Liferay 启动过程分析14-初始化resource code
查看>>
实验(一):认识数据库的参数文件
查看>>
\做为分割符要注意的问题
查看>>
解决使用perl lwp访问网页乱码的问题
查看>>
java json和object互换
查看>>
IT技术晋级之路-系统分区
查看>>
脚本语言程序员怎么学习程序设计?
查看>>
Enterprise Library 2.0 Hands On Lab 翻译(15):加密应用程序块(二)
查看>>
帮助电力,轻松实现运维管理
查看>>
三地跨区域链路 汇聚统一监控平台——国际化综合性顾问咨询公司阿特金斯
查看>>
SQL SERVER与MYSQL 的重复插入的区别
查看>>
cocos2d-x学习笔记09:动作2:持续动作
查看>>
网络嗅探软件全接触(2)
查看>>
J0ker的CISSP之路:复习-Information Security Management(4)
查看>>
使用CSS 3创建不规则图形
查看>>
SCOM 2007 R2监控系统安装部署(三)安装SCOM报表服务器和审计服务器
查看>>