邮票组合问题

有四种面值的邮票很多枚,面值分别为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 --> 邮票连续组合问题的更多相关文章

  1. C语言练习题_邮票组合

    背景:        我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同的邮资.        现在,邮局有4种不同面值的邮票.在每个信封上最 ...

  2. P1021 邮票面值设计

    P1021 邮票面值设计 题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX ...

  3. UVA - 242 线性DP

    题意:给定多种邮票的组合,邮票最多只能用S张,这些邮票能组成许多不同面额,问最大连续面额的长度是多少,如果有多个组合输出组合中邮票数量最少的,如果仍有长度一致的,输出邮票从大到小排序后字典序最大的那个 ...

  4. sscanf()函数的使用及其实例

    资料引自: 传送门 sscanf函数原型: Int sscanf( const char * src, const char * format, ...); int scanf( const char ...

  5. POJ 1010 题目翻译+题解

    题目实在是太难懂了,我翻译了一下... STAMPS Description Have you done any Philately lately? 你最近有没有集邮? You have been h ...

  6. 【论文阅读】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. ...

  7. inno setup介绍及官方网站地址

    使 用 笔 记 1.Inno Setup 是什么?Inno Setup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞 ...

  8. sscanf的用法(转)

    队长做上海邀请赛的I题时遇到一个棘手的问题,字符串的处理很麻烦,按传统的gets全部读入的话还要做N多处理,太浪费时间. 回来之后搜了一下sscanf的用法发现可以很好的解决这一类问题,各种百度,转来 ...

  9. sscanf 函数

    sscanf 函数: 从一个字符串中读进与指定格式相符的数据. 头文件: #include<stdio.h> 返回值:  sscanf("1 2 3","%d ...

随机推荐

  1. Google最新的图片格式WEBP全面解析

    前言 不管是 PC 还是移动端,图片一直是流量大头,以苹果公司 Retina 产品为代表的高 PPI 屏对图片的质量提出了更高的要求,如何保证在图片的精细度不降低的前提下缩小图片体积,成为了一个有价值 ...

  2. 【linux】mysql安装问题 g++: not found

    问题现象: ../depcomp: line 512: exec: g++: not foundmake[2]: *** [my_new.o] Error 127make[2]: Leaving di ...

  3. Scheme change not implemented

    1.错误描述 2.错误原因 由于在改变Java代码中的方法或运行代码出现,导致Tomcat编译的代码不能替换工作空间的代码,即不能及时同步,出现错误 3.解决办法 (1)关闭Tomcat,clean一 ...

  4. 芝麻HTTP:在无GUI的CentOS上使用Selenium+Chrome

    各位小伙伴儿的采集日常是不是被JavaScript的各种点击事件折腾的欲仙欲死啊?好不容易找到个Selenium+Chrome可以解决问题! 但是另一个▄█▀█●的事实摆在面前,服务器都特么没有GUI ...

  5. Alice and Bob HDU - 4268

    Alice and Bob's game never ends. Today, they introduce a new game. In this game, both of them have N ...

  6. idea-全局默认maven配置

    在项目实战中我们依赖的开发IDE可谓是我们的饭碗,怎么高效优化使用IDE将极大提高我们开发的效率,这里通过一些人性化的设置让我们更加舒适的开发,默认IntelliJ IDEA 是有一套自己的IDE整体 ...

  7. 试着讲清楚:js代码运行机制

    一. js运行机制 js执行引擎 经常看文章的说到js是带线程的,其实这个说法非常的模糊,准确的是js执行引擎是单线程的,js执行引擎就是js代码的执行器,有了这个概念就可以下来说说js是如何运行的了 ...

  8. [Luogu2617]Dynamic Ranking

    题面戳这 类似算法总结 1.静态整体Kth 滑稽吧...sort一遍就好了. 时间复杂度\(O(nlogn)\) 空间复杂度\(O(n)\) 2.动态整体Kth 离散化后开一棵权值线段树,每个位置的值 ...

  9. [luogu3600]随机数生成器

    题面在这里 题意 给定n个[1-x]的随机整数\(a_1,a_2,a_3,...,a_n\)和q个询问区间\((l_i,r_i)\), 求出\(\max_{i=1}^{q}({\min_{j=l_i} ...

  10. 【Luogu3919】可持久化数组(主席树)

    题面戳我 题解 放一个板子在这里 用主席树维护一下每个版本就可以啦... #include<iostream> #include<cstdio> #include<cst ...