博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1021 邮票面值设计
阅读量:5291 次
发布时间:2019-06-14

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

题目描述

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

例如,N=3K=2,如果面值分别为1分、4分,则在1分~6分之间的每一个邮资值都能得到(当然还有8分、9分和12分);如果面值分别为1分、3分,则在1分~7分之间的每一个邮资值都能得到。可以验证当N=3K=2时,7分就是可以得到的连续的邮资最大值,所以MAX=7,面值分别为1分、3分。

输入格式

2个整数,代表NK。

输出格式

2行。第一行若干个数字,表示选择的面值,从小到大排序。

第二行,输出“MAX=S”,S表示最大的面值。

输入输出样例

输入 #1复制
3 2
输出 #1复制
1 3MAX=7
#include
#include
#include
#include
#include
#include
using namespace std;int a[201],ans[201],dp[50001];int n,k,maxx=0;int sol(int m){ int i,j; memset(dp,0x3f3f3f,sizeof(dp)); dp[0]=0; for(i=1;i<=m;i++){ for(j=a[i];j<=a[m]*n;j++){ if(dp[j-a[i]]
maxx){ maxx=t; memcpy(ans,a,sizeof(ans)); } return ; } int t=sol(m-1); for(int i=a[m-1]+1;i<=t+1;i++){ a[m]=i,dfs(m+1),a[m]=0; }}int main(){ scanf("%d%d",&n,&k); a[1]=1; dfs(2); for(int i=1;i<=k;i++){ printf("%d ",ans[i]); } printf("\nMAX=%d\n",maxx); return 0;}

  

转载于:https://www.cnblogs.com/xiongchongwen/p/11388064.html

你可能感兴趣的文章
Sqli labs系列-less-4 这关好坑!!!
查看>>
路由跟踪工具0trace
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
T-SQL触发器,限制一次只能删除一条数据
查看>>
boost库使用:vs2013下boost::container::vector编译出错解决
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
理解运算符重载 4
查看>>
快来熟练使用 Mac 编程
查看>>
第二周
查看>>
断言简介
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
plsql使用,为什么可以能看见其他用户的表
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
Scripting Java #3:Groovy与invokedynamic
查看>>
2014-04-21-阿里巴巴暑期实习-后台研发-二面经验
查看>>
数据结构中线性表的基本操作-合并两个线性表-依照元素升序排列
查看>>
使用pager进行分页
查看>>
吐医疗器械研发可配置性需求的槽点
查看>>
UVA - 1592 Database
查看>>