Algorithm --> 邮票连续组合问题
邮票组合问题
有四种面值的邮票很多枚,面值分别为1,4,12,21,取五张,求取出这些邮票的最大连续组合值
代码:
#include <stdio.h>
#include <string.h>
#define N 5
#define M 5
int k, Found, Flag[N];
int Stamp[M] = {, , , , };
// 在剩余张数n中组合出面值和Value
int Combine(int n, int Value)
{
if(n >= && Value == )
{
Found = ;
int Sum = ;
for(int i=; i<N && Flag[i] != ; i++)
{
Sum += Stamp[Flag[i]];
printf("%d ", Stamp[Flag[i]]);
}
printf("\tSum=%d\n\n", Sum);
}
else
{
for(int i=; i<M && !Found && n>; i++)
if(Value-Stamp[i] >= )
{
Flag[k++] = i;
Combine(n-, Value-Stamp[i]);
Flag[--k] = ;
}
}
return Found;
}
int main(int argc, char* argv[])
{
for(int i=; Combine(N, i); i++, Found=);
}
改进算法:
#include <iostream>
#include <string.h>
using namespace std; #define MAX 10
#define MAXINT 100000 #define min(a, b) ((a) >= (b) ? (b) : (a)) int Stamp[MAX+];
int StampCnt[MAXINT] = {}; int MaxValue(int n, int m)
{
int i, j; for(i = ; ; i++)
{
StampCnt[i] = ;
for(j = ; j <= m; j++)
{
if(Stamp[j] == i)
{
StampCnt[i] = ;
break;
}
else if(i > Stamp[j])
{
StampCnt[i] = min(StampCnt[i], StampCnt[i-Stamp[j]] + );
}
} if(StampCnt[i] > n)
return i-;
}
// return 0;
} int main()
{
int N, M;
int i, j; cin >> N >> M; //5 5, 输入 1 2 4 12 21, 输出 71 memset(Stamp, , sizeof(Stamp));
for(i = ; i <= M; i++)
{
cin >> Stamp[i];
} cout << MaxValue(N, M) << endl;
}
Algorithm --> 邮票连续组合问题的更多相关文章
- C语言练习题_邮票组合
背景: 我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同的邮资. 现在,邮局有4种不同面值的邮票.在每个信封上最 ...
- P1021 邮票面值设计
P1021 邮票面值设计 题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX ...
- UVA - 242 线性DP
题意:给定多种邮票的组合,邮票最多只能用S张,这些邮票能组成许多不同面额,问最大连续面额的长度是多少,如果有多个组合输出组合中邮票数量最少的,如果仍有长度一致的,输出邮票从大到小排序后字典序最大的那个 ...
- sscanf()函数的使用及其实例
资料引自: 传送门 sscanf函数原型: Int sscanf( const char * src, const char * format, ...); int scanf( const char ...
- POJ 1010 题目翻译+题解
题目实在是太难懂了,我翻译了一下... STAMPS Description Have you done any Philately lately? 你最近有没有集邮? You have been h ...
- 【论文阅读】PRM-RL Long-range Robotic Navigation Tasks by Combining Reinforcement Learning and Sampling-based Planning
目录 摘要部分: I. Introduction II. Related Work III. Method **IMPORTANT PART A. RL agent training [第一步] B. ...
- inno setup介绍及官方网站地址
使 用 笔 记 1.Inno Setup 是什么?Inno Setup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞 ...
- sscanf的用法(转)
队长做上海邀请赛的I题时遇到一个棘手的问题,字符串的处理很麻烦,按传统的gets全部读入的话还要做N多处理,太浪费时间. 回来之后搜了一下sscanf的用法发现可以很好的解决这一类问题,各种百度,转来 ...
- sscanf 函数
sscanf 函数: 从一个字符串中读进与指定格式相符的数据. 头文件: #include<stdio.h> 返回值: sscanf("1 2 3","%d ...
随机推荐
- php和java中的加密和解密
遇到的java代码如下: Cipher cipher=Cipher.getInstance("DESede/CBC/PKCS5Padding"); 在php中使用des算法 始终校 ...
- dojo报错总结
dojo报错总结 1.错误一 neteaseTracker is not defined dojo.js(第15行) 2.错误二 _10 is undefined _SearchMixin.js(第5 ...
- Java Web项目(Extjs)报错一
1.Java Web(Extjs)项目报错一 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -no ...
- Error 1313: RETURN is only allowed in a FUNCTION SQL Statement
1.错误描述 14:07:26 Apply changes to rand_string Error 1313: RETURN is only allowed in a FUNCTION SQL St ...
- 易理解java代码8皇后问题
马上就要蓝桥杯比赛了,我这些算法还是不会,确实有点慌,今天一天早上睡到很晚不愿起床,然后才开始研究8皇后问题.这也是典型的回溯与递归问题.其实本质上和马踏棋盘问题非常类似,八皇后问题呢,就是要判断主对 ...
- SpringMVC拦截器(包括自定以拦截器--实现HandlerInterceptorAdapter)(资源和权限管理)
一,springmvc的配置 <!-- 访问拦截 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping ...
- Struts2入门这一篇就够了
前言 这是Strtus的开山篇,主要是引入struts框架...为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门.... 为什么要引入struts? 既然Se ...
- ES6常用知识点小结
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准. 因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015(简称ES2015).虽然浏览器在不 ...
- 【HDU 2063】过山车(二分图最大匹配模板题)
题面 RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐.但是,每 ...
- 机器学习-kNN
基于Peter Harrington所著<Machine Learning in Action> kNN,即k-NearestNeighbor算法,是一种最简单的分类算法,拿这个当机器学习 ...