博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题目1209:最小邮票数
阅读量:5368 次
发布时间:2019-06-15

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

最小邮票数

题目描述:

    有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值。

    如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分、3分、4分即可。

输入:

    有多组数据,对于每组数据,首先是要求凑成的邮票总值M,M<100。然后是一个数N,N〈20,表示有N张邮票。接下来是N个正整数,分别表示这N张邮票的面值,且以升序排列。

输出:

      对于每组数据,能够凑成总值M的最少邮票张数。若无解,输出0。

样例输入:
1051 3 3 3 4
样例输出:
3
Source Code:
#include 
#define INF 0x7fffffff using namespace std; struct Stamp{ int weight; int value;}; int dp[110];Stamp Arr[100000]; int minVal(int a,int b){ return a
>n>>m){ for(int i=1;i<=m;++i){ cin>>Arr[i].weight; Arr[i].value=1; } dp[0]=0; for(int i=1;i<=n;++i) dp[i]=INF; for(int i=1;i<=m;++i){ for(int j=n;j>=Arr[i].weight;--j){ if(dp[j-Arr[i].weight]!=INF) dp[j]=minVal(dp[j],dp[j-Arr[i].weight]+Arr[i].value); } } if(dp[n]==INF) cout<<0<

 

 

转载于:https://www.cnblogs.com/Murcielago/p/4222525.html

你可能感兴趣的文章
hdu 2767(tarjan)
查看>>
sklearn之分类模型混淆矩阵和分类报告
查看>>
MySQL各存储引擎
查看>>
项目--简单导出CSV文件
查看>>
Oracle session相关数据字典(一)
查看>>
C#用正则表达式 获取网页源代码标签的属性或值
查看>>
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
查看>>
WCF(一) 简单的认知
查看>>
[MFC][DShow]简单例子
查看>>
js onclick事件传参
查看>>
WiCloud 商业Wi-Fi管理平台
查看>>
团队项目--未完待续
查看>>
双重标准,我该怎么解决
查看>>
python中的网页标签等字符处理
查看>>
Linux常用命令(十二)
查看>>
Linux常用命令(十五)
查看>>
Linux常用命令(十四)
查看>>
Linux常用命令(十七)
查看>>
Linux常用命令(十六)
查看>>
day 3 修改haproxy.cfg 作业
查看>>