连续邮资问题

回溯法求解连续邮资问题 实验内容与要求 内容:假设某国家发行了n中不同面值的邮票,并且规定每张信封上最多只允许贴m张。 要求:对于给定的m和n的值,给出邮票面值的最佳设计,使得可以在一张信封上贴出从邮资1开始,增量为1的最大连续邮资区间。 实验分析 ①对于连续邮资的问题,由于实验开始是仅给出面值的数量,而面值的具体值是未知的。但是由于邮资需要从1开始,因此,面值具体值中必然有1。可以考虑建立一个数组用于存储具体的... 阅读详情

 

连续邮资问题

 

连续邮资问题就是搜索和dp结合的题目

 

cost[0] = 1

cost[i] 的取值范围为(递增) [ cost[i-1]+1 , r[i-1]+1 ]  ( r[i] 在前i中确定的邮票,使用m张能得到的最大连续区间的上限 )

 

现在需要知道在i种已经确定的面值,最多使用m张能得到的最大连续区间  即r[i]

 

用dp的思想能够加速

 

设 S[i][j] 为前i中邮票组成面值为j最少需要多少张

 

因为前i张邮票的面值一直都在变化 所以S要在回溯每个状态都要求  那么我只要保持S[j]就行了 即在目前回溯的状态已经枚举出了第i张邮票  然后用S求出加入这第i张邮票的最大上限

 

S[j + l * v[i] ] = S[j] + l < S[j + l*v[i] ] ? S[j] + l : S[j + l*v[i] ]

 

 

具体看代码  其中的i表示v[i]

 

            for( int j = 0;j < _gM*_gCost[k-1];++j )

            {

                if( _gUse[j] < _gM && _gUse[j] + i*_gM < _DEF_MAXSIZE )

                {

                    for( int l = 1;l <= _gM - _gUse[j];++l )

                    {

                        if( _gUse[j]+l < _gUse[ j + i*l ] )

                            _gUse[ j + i*l ] = _gUse[j]+l;

                    }

                }

            }

 

完整代码

 

连续邮资问题:某国家发行了n种不同面值的邮票,

并且规定每张信封上最多只允许贴m张邮票。

连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,在1张信封上贴出从邮资1开始,

增量为1的最大连续邮资区间。例如,当n=5和m=4时,面值为{1,3,11,15,32}的5种邮票可以贴出的最大连续邮资区间是1到70.

 

5

4

{1,3,11,15,32}:70

 

5

5

{1,4,9,31,51}:126

 

5

6

{1,7,12,43,52}:216

 

6

3

{1,3,7,9,19,24}:52

 

6

4

{1,4,9,16,38,49}:108

 

 

 

 

连续邮资问题的实现代码 连续邮资问题的代码: #include stdio.h> #include stdlib.h> #include limits.h> #define MAXINT INT_MAX-1 #define VALUE_LIMIT 1500     int n,m;                        //n:邮票的种数,m:邮票的最大数量    int maxv;          阅读详情

相关推荐

算法:连续邮资问题(回溯+动态规划+剪枝)

问题描述 假设国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许m张邮票。连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,即在1张信封上可贴出从邮资1开始,增量为1的最大连续邮资区间。例如,当n=5和m=4时,面值为(1,3,11,15,32)的5种邮票可以贴出邮资的最大连续邮资区间是1-70。 问题分析 对于连续邮资问题,用n元组x[1:n]表示n种不同的邮票面值,并约定它...

xiaoyeNN的博客 1万+

连续邮资问题详解

假设国家发行了k种不同面值的邮票,并且规定每张信封上最多只允许贴h张邮票。连续邮资问题要求对于给定的k和h的值,给出邮票面值的最佳设计,在1张信封上可贴出从邮资1开始,增量为1的最大连续邮资区间。例如,当k=5和h=4时,面值为(1,3,11,15,32)的5种邮票可以贴出邮资的最大连续邮资区间是1到70。(UVA165) 思路概括: 用stampval来保存各个面值,用maxval来保存当...

羊书change的博客 1万+

连续邮资问题(DP)

连续邮资问题: 假设国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,在一张信封上可以贴出从邮资1开始,增量为1的最大连续邮资区间。  举例分析: 当n=2,m=3时,如果面值分别为1和4,则可以获得的邮资范围为1~6 加上 8 , 9 , 12 因为8.9.12和1~6并不连续,使用最大能取到的是6用动态规划的思想...

qhlpptdyfn的博客 2221

UVa 165 - Stamps, 连续邮资问题

165 - Stamps 2611 35.85% 879 77.59% 题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=108 类型: 回溯 原题: The gove

D_Double's Journey 6277

算法设计——连续邮资问题

经历了一周考试周,好久没写代码了。 题目:假设国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,在1张信封上可贴出从邮资1开始,增量为1的最大连续邮资区间。例如,当n=5和m=4时,面值为(1,3,11,15,32)的5种邮票可以贴出邮资的最大连续邮资区间是1到70。 思路:搜索结点的状态应该是已经确...

羽翼的博客 2314

告别手动标注!用ENVI Classic高效搞定高光谱图像语义分割标签(以农业/地物分类为例)

本文详细介绍了如何利用ENVI Classic实现高光谱图像的半自动化智能标注,特别针对农业和地物分类场景。通过光谱特征分析、智能标注技巧和MAT文件转换,显著提升标注效率和质量,助力AI模型训练。

weixin_28694169的博客 251

连续邮资问题-回溯法

回溯法的设计思想: 回溯法从根节点出发,按照深度优先策略遍历解空间树,搜索满足约束条件的解。在搜索至树中任一节点时,先判断该节点对应的部分解是否满足约束条件I,是否超出目标函数的界,也就是判断该节点是否包含问题的最优解,如果肯定不包含,则跳过对以该节点为根的子树的搜索(即所谓剪枝),返回上一层的节点,从其他子节点寻找通向最优解的路径;否则,进入以该节点为根的子树,继续按照深度优先策略搜索。 回溯法...

nic's blog 7564

用 Python 和 uiautomation 实现微信批量发送

思路是这样,将要发送的人员名单(包括称呼)以及发送内容都维护到Excel里,程序运行时读取Excel里内容,自动搜索人员姓名(微信昵称或备注名),填入要发送的内容,拼接上称呼(如果需要的话)自动点击发送,这样轮巡直至名单人员全部发送完成。、

jankingdom的专栏 1471

动态规划——连续邮资问题

题目:假设国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,在1张信封上可贴出从邮资1开始,增量为1的最大连续邮资区间。例如,当n=5和m=4时,面值为(1,3,11,15,32)的5种邮票可以贴出邮资的最大连续邮资区间是1到70。 思想: 首先比较困难的这个题目看上去循环是没有上限的,也就是我们看似找不到循环边界,...

qq_39690007的博客 2402

Modbus 通信协议详解

Modbus是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给 IDA(,分布式自动化接口)组织,并成立了 Modbus-IDA 组织。

Projectsauron 的博客 7万+

新手别怕!用嘉立创EDA从零画一块ESP8266最小系统板(附完整PCB源文件)

本文详细指导新手如何使用嘉立创EDA从零开始设计ESP8266最小系统板,涵盖原理图绘制、PCB布局、布线技巧及设计验证等关键步骤。通过实战案例和实用技巧,帮助读者快速掌握PCB设计基础,轻松打造自己的物联网开发板,并附完整PCB源文件供参考。

weixin_28716769的博客 618

连续邮资问题解决

题目:假设国家发行了k种不同面值的邮票,并且规定每张信封上最多只允许贴h张邮票。连续邮资问题要求对于给定的k和h的值,给出邮票面值的最佳设计,在1张信封上可贴出从邮资1开始,增量为1的最大连续邮资区间。例如,当k=5和h=4时,面值为(1,3,11,15,32)的5种邮票可以贴出邮资的最大连续邮资区间是1到70。

weixin_42418315的博客 3169

[NVME] CMBLOC-Controller Memory Buffer Location

CMBLOC-Controller Memory Buffer Location

jinyuya的博客 987

连续邮资问题的解决办法

连续邮资问题                                             ------策划方案1、问题描述       假设国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,在1张信封上可贴出从邮资1开始,增量为1的最大连续邮资区间。 2.解决方案及基本思想(递归)  (1)基本思路: 

StoneRain 7327

Python爬虫实战:利用Playwright与异步技术高效抓取链家十万级二手房数据

在开始编写代码之前,我们首先需要为项目选择合适的技术栈。1. 传统方案:Requests + BeautifulSoup优点: 简单、轻量、学习成本低。直接发送HTTP请求获取HTML,然后解析。缺点: 对于大量由JavaScript动态渲染的内容无能为力。现代网站(包括链家)大量使用JS来加载数据和实现交互,简单的HTTP请求无法获取到完整的页面内容。此外,容易被基于IP或请求头特征的反爬机制拦截。2. 进阶方案:Selenium优点。

2201_76125261的博客 889

STM32串口控制LED灯的亮灭

STM32中的串口控制LED灯的亮灭,分为两种方式,一种是直接发送数字0和1来控制灯的亮灭,另一种是通过发送字符串来控制。 我所使用的开发板主控芯片是STM32F401RET6,主频84MHz, 首先要进行串口的初始化: /* 函数功能:串口的初始化 函数名:Usart_Init 返回值:无 参数:u32 brr 备注: USART1_TXD->PA9 USART1_RXD->PA10 */ void Usart_Init(u32 brr) { float div; u16 div

博客 2万+
上一篇: noip 虫食算
下一篇: noip2008 传纸条
code_beauty
博客等级 码龄16年 25粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值