题目描述:

有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值。
    如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分、3分、4分即可。

输入:

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

输出:

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

样例输入:
10
5
1 3 3 3 4
样例输出:
3
 #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#define MAX 22 int ticket[MAX];
int flag[MAX];
int min; void dfs(int target, int end, int cnt) {
if(cnt > min) {
return;
}
if(target == ) {
if(cnt < min) {
min = cnt;
return;
}
}
for(int i = end-; i >= ; i--) {
if(flag[i] == && ticket[i] <= target) {
flag[i] = ;
dfs(target - ticket[i], i,cnt + );
flag[i] = ;
}
}
} int main()
{ int n, m;
while(scanf("%d",&n) != EOF) { scanf("%d",&m);
for(int i = ; i < m; i++) {
scanf("%d",&ticket[i]);
}
memset(flag,,sizeof(flag));
min = m+;
dfs(n,m,);
if(min != m+) {
printf("%d\n",min);
}
else {
puts("");
} }
return ;
}

这道题考虑的是回溯法,并用类似天平的思想,从大到小依次加砝码。如果不行,全都移除,从下一个大的开始继续加。

这道题也能用动态规划求解,时间要稍长一些

写了一个简单的代码:

 #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <cmath>
#define MAX 22
#define inf 1000002
using namespace std; int ticket[MAX];
int dp[MAX][]; int main()
{
//freopen("input.txt","r",stdin);
int n, m;
while(scanf("%d",&n) != EOF) { scanf("%d",&m);
for(int i = ; i < m; i++) {
scanf("%d",&ticket[i]);
} for(int r = ; r <= n; r++) {
for(int i = ; i < m; i++) {
dp[i][r] = inf;
}
} for(int i = ; i <=n; i++) {
dp[i][] = ;
}
dp[][ticket[]] = ;
for(int r = ; r <= n; r++) {
for(int i = ; i < m; i++) {
if(r >= ticket[i]) {
dp[i][r] = min(dp[i-][r],dp[i-][r-ticket[i]] + );
}
else {
dp[i][r] = dp[i-][r];
}
}
} if(dp[m-][n] != inf) {
printf("%d\n", dp[m-][n]);
}
else {
puts("");
} }
return ;
}

主要的难点在于初始化和转移方程

九度oj 题目1209:最小邮票数的更多相关文章

  1. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  2. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  3. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  4. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. 九度OJ 1502 最大值最小化(JAVA)

    题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...

  6. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  7. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

  8. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

  9. 九度oj题目1002:Grading

    //不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...

随机推荐

  1. powershell 根据错误GUID查寻错误详情

    使用azurepowershell 部署模板时,碰到了下面类似的问题: The template deployment 'ExampleDeployment-' is not valid accord ...

  2. Gitlab User Guide

    Installation Configuration Set user name and email Add SSH keys Repository Create New Repository Clo ...

  3. npm scripts的生命周期管理

    我们平时阅读一些开源项目,可能会发现有些项目的package.json里的scripts区域定义的脚本很复杂,令人眼花缭乱. 其实这些脚本是有规律可循的.让我们从最简单的一个例子开始学习. 新建一个空 ...

  4. Git强制pull

    git fetch --all git reset --hard origin/master

  5. ipsec配置strongswan.conf和ipsec.conf

    配置strongswan.conf vi /usr/local/etc/strongswan.conf # strongswan.conf - strongSwan configuration fil ...

  6. nuxt 头部引入js文件 第一次进入页面不加载js文件的解决方法

    head () { return { title: '', meta: [ { hid: 'description', name: 'description', content: '' } ], sc ...

  7. spring boot 下 dataTable|pagehelper 组合进行分页 筛选 排序

    1)Js 需提前引用 jquery.dataTables $(function () { //提示信息 初始化设置 一般不需要改 var lang = { "sProcessing" ...

  8. Use-After-Free

    0x00 UAF利用原理 uaf漏洞产生的主要原因是释放了一个堆块后,并没有将该指针置为NULL,这样导致该指针处于悬空的状态(这个指针可以称为恶性迷途指针),同样被释放的内存如果被恶意构造数据,就有 ...

  9. springboot文字转语音(jacob)

    近期项目中出现在离线情况下文字转语音的需求 进过尝试返现jacob还不错 一下为开发记录: 1.pom.xml中引入jacob.jar <dependency> <groupId&g ...

  10. javaEE(14)_文件上传下载

    一.文件上传概述 1.实现web开发中的文件上传功能,需完成如下二步操作: •在web页面中添加上传输入项•在servlet中读取上传文件的数据,并保存到本地硬盘中. 2.如何在web页面中添加上传输 ...