连续邮资问题python
连续邮资问题python
- 问题描述
- python代码
- 输出结果
问题描述
问题:给定n种不同面值的邮票,每个信封至多m张,
试给出邮票的最佳设计,使得从1开始,增量为1的连续邮资区间达到最大?
实例:n=5,m=4,
面值 X1=<1,3,11,15,32>,邮资连续区间为{1, 2, …,70}
面值 X2=<1,6,10,20,30>,邮资连续区间为{1, 2, 3, 4}
可行解 :<x1, x2, …, xn>,x1=1, x1< x2< …< xn 约束条件:在结点<x1, x2, …, xi>处,邮资最大连续区间为{1, … , ri },xi+1的取值范围是{xi+1, … , ri+1}
python代码
n=4
m=3
def calc_Sk(Xi_1):xi_1,yi_1,ri_1=Xi_1[-1] if Xi_1 else (0,list(range(0,m+1)),0)Si=range(xi_1+1,ri_1+2)for xi in Si:yi=[0]ri=0flag=Truefor j in range(1,m*xi+1):yij_=[ t+yi_1[j-t*xi] for t in range(0,m+1) if 0<=j-t*xi<len(yi_1) ]if yij_:yij=min(yij_)yi.append(yij)if flag and yij<=m:ri=jelse:flag=Falseelse:breakyield (xi,yi,ri)
def reback(k,Xk_1):#回溯算法的递归实现if k>n :#输出结果Xn=Xk_1.copy()yield Xnelse:#计算SkSk=calc_Sk(Xk_1)#遍历子节点for xk in Sk: Xk_1.append(xk)Xk=Xk_1yield from reback(k+1,Xk)Xk.pop()Xk_1=Xk
def rebacktrack():yield from reback(1,[])
s=[([i[0] for i in e],e[-1][-1]) for e in rebacktrack()]
print(max(s,key=lambda x:x[1]))
输出结果
([1, 4, 7, 8], 24)
开发环境:VScode + Jupyter notebook
python版本:3.9.12
连续邮资问题python相关推荐
- 算法:连续邮资问题(回溯+动态规划+剪枝)
问题描述 假设国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许m张邮票.连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,即在1张信封上可贴出从邮资1开始,增量为1的最大连续邮资 ...
- 回溯算法,模板,拔河,旅行商,连续邮资问题题解
文章目录 回溯算法模板 递归回溯 迭代回溯 子集树 排列树 题目 拔河问题 旅行商问题 连续邮资问题 回溯算法模板 递归回溯 回溯法对解空间做深度有限搜索,因此在一般情况下可用递归函数来实现回溯法如下 ...
- 连续邮资问题-回溯法
回溯法的设计思想: 回溯法从根节点出发,按照深度优先策略遍历解空间树,搜索满足约束条件的解.在搜索至树中任一节点时,先判断该节点对应的部分解是否满足约束条件I,是否超出目标函数的界,也就是判断该节点是 ...
- 5.12回溯法--连续邮资问题--子集树
回溯法的题目太多了,不想写这个代码了,于是我就开始水一篇文章,就单纯的分析一下这个问题保持整本书完整的队形 问题描述 如何用有限的邮票数,贴出更多面额的需求? 举例 n=5,m=4 设计1:X1={1 ...
- 回溯法求解连续邮资问题
实验内容与要求 内容:假设某国家发行了n中不同面值的邮票,并且规定每张信封上最多只允许贴m张. 要求:对于给定的m和n的值,给出邮票面值的最佳设计,使得可以在一张信封上贴出从邮资1开始,增量为1的最大 ...
- 连续邮资问题的回溯法解决办法
/* 连续邮资问题 算法设计: 该问题是设计最佳的邮票面值,用来表示最大的区间 对于连续邮姿问题,用n元组x[1:n]表示n种不同的邮票面值并约定它们从小到大排列. 整数r表示当前使用不超过m张邮票能 ...
- 算法设计:连续邮资问题
问题描述: 假设某国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票.连续邮资问题要求对于给定的n和m,给出邮票面值的最佳设计,在1张信封上贴出从邮资1开始,增量为1的最大连续邮资区 ...
- python 判断数字连续_关于python:检测列表中的连续整数
本问题已经有最佳答案,请猛点这里访问. 我有一个包含这样的数据的列表: [1, 2, 3, 4, 7, 8, 10, 11, 12, 13, 14] 我想打印出连续整数的范围: 1-4, 7-8, 1 ...
- 连续投影算法-python版
连续投影算法 - SPA python版 文章目录 连续投影算法 - SPA python版 原理 连续投影算法大量用于光谱特征波长选择中,翻遍全网,SPA算法只找到了MATLAB版本. 该版本为MA ...
最新文章
- ThinkPHP读取数据库数据到模板文件
- Prepare for Android
- js调试之console.log()
- 导出Excle java
- 面试必问系列之在浏览器中输入URL后到网页显示 其间发生了什么?
- 读《爱的艺术》书评而问
- VS2008 vs2010中JQUERY智能提醒
- WMPLib.WindowsMediaPlayer 的用法
- java线程异常终止_java线程莫名异常退出时,如何捕获异常信息
- 离职因多写3个字被索赔2.9万,这家公司的操作让网友直呼拳头摁了......
- VS2017安装MSDN帮助文档
- linux soruce 命令,Linux source命令是干啥的?
- Android native crash debug
- luogu1725 琪露诺
- Win10以太网没有有效的IP配置解决方法
- 搭建云服务器简单流程【华为云服务器】
- CPU卡内部认证与外部认证
- 极限挑战 极致突破——奇安信的2022
- PHP 中 GD库(以及Jpgraph库) 的配置和使用。(满屏荒唐言,一把辛酸泪)
- E课网AHB-SRAMC