JAVA代码—算法基础:最大连续邮资问题求解

本文探讨了最大连续邮资问题,针对给定邮票面值限制,寻找能覆盖最大连续邮资区间的邮票组合。通过分析得出,邮票面值应从小到大排列,随着面值增加,选择的范围逐步受限。文章提供了算法设计思路。
摘要由CSDN通过智能技术生成
最大连续邮资问题求解

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

分析:
对于连续邮资问题,用n元组x[1:n]表示n种不同的邮票面值,并约定它们从小到大排列。x[1]=1是惟一的选择。此时的最大连续邮资区间是[1:m]。
x[2]的可取值范围是[2:m+1]。
在一般情况下,已选定x[1:i-1],最大连续邮资区间是[1:r],则x[i]的可取值范围是[x[i-1]+1:r+1]。

算法设计:

package com.bean.algorithmbasic;

public class StampsDemo2 {

    /*
    连续邮资问题:
    假设国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。
    连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,
    在一张张信封上可以贴出从邮资1开始,增量为1的最大连续邮资区间。

    举例分析:
    当n=2,m=3时,如果面值分别为1和4,则可以获得的邮资范围为1~6 加上 8 , 9 , 12。但是8,9,12已经是不连续的和了。
    如果面值为1,3,则可以获得1~7之间的每个邮资值,并且7就是可以得到的连续的邮资最大值。


    前解,递归调用 , 回溯

    输入:
    2
    2 3
    5 4

    输出:
    7
    1 3

    70
    1 3 11 15 32
    */


    static final int NUM=10;
    static final 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值