精品05 回溯法.pptVIP

  • 9
  • 0
  • 约1.2万字
  • 约 64页
  • 2017-11-04 发布于湖北
  • 举报
《铁机》05回溯法

5.12 连续邮资问题 连续邮资问题描述 假设国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。 连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,在1张信封上可贴出从邮资1开始,增量为1的最大连续邮资区间。 例如,当n=5和m=4时,面值为(1,3,11,15,32)的5种邮票可以贴出邮资的最大连续邮资区间是1到70。 70=32+32+3+3 69=32+22+15 …… 5.12 连续邮资问题 问题分析 解向量 用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]。 5.12 连续邮资问题 如何确定r的值? 计算X[1:i]的最大连续邮资区间在本算法中被频繁使用到,因此势必要找到一个高效的方法。考虑到直接递归的求解复杂度太高,我们不妨尝试计算用不超过m张面值为x[1:i]的邮票贴出邮资k所需的最少邮票数y[k]。通过y[k]可以很快推出r的值。 事实上,y[k]可以通过递推在O(n)时间内解决: for (int j=0; j= x[i-2]*(m-1);j++) if (y[j

文档评论(0)

1亿VIP精品文档

相关文档