网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月25日漏签0天
mathcad吧 关注:5,399贴子:28,229
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 下一页 尾页
  • 16回复贴,共2页
  • ,跳到 页  
<<返回mathcad吧
>0< 加载中...

【思考题】最佳的货币面值组合方式

  • 取消只看楼主
  • 收藏

  • 回复
  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
好久没出思考题了,前几天我从微信公众号“超级数学建模”上看到了一个报道,说加拿大滑铁卢大学计算机系研究员(这个系就是Maple的诞生地哈!)Jeffrey Shallit通过数学建模解出来我们现在的货币组合方式——1元、5元、10元、20元、50元——效率并不好,他算出使用1元、5元、16元、23元、33元这种面额的钞票是最佳的,因为同样是通过面值组合形成1~99元,按他给出的新组合,平均仅需要3.29张。
嗯,公众号里的插科打诨我就不抄了,只说题面,希望各位通过自己的建模来检验一下Jeffrey Shallit的计算是否正确:
平时我们去超市买东西,每次使用100元一下数额的钱(1元到99元),需要用1元、5元、10元、20元、50元五种面额的铅笔组合而成,有的时候需要一张,有的时候需要两张或更多。比如你需要31元的零钱,可以用三张10元和一张1元,也可以用一张10元、一张20元和一张1元,前一种需要四张纸币,后一种需要三张。在组成31的所有可能方案中,10+20+1是最佳的,它最节省钞票张数,也就是说,凑成31元最少也需要三张纸币。
我们可以对1到99之间的每个数额分别算出来它最少需要的纸币张数,这不难通过编程实现。这样一来就能知道使用这五种面额的人民币组成99个数额,在最“环保”的组合方式下,平均需要多少张纸币。
Jeffrey在电脑上把参数修改了一下,五种纸币的面额更改为各种其他数值,让电脑程序运行,看一看哪一种货币面额体系在组成99个数额的时候平均最方便、需要的纸币张数最少。形成了下面的表:

Jeffrey的思路在题面里也说得很明白,根据这条思路也给出了他的计算结果,公众号里说这是他发表于2003年的一篇论文中的数据。好了,各位,尝试着自己建一个模型来验证Jeffrey的计算是否正确吧, :)


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个不是排列组合问题,我自己试着编了一次,用递归和穷举就可以解决这个问题。
我觉得觉得这个问题原来我怎么没想到呢哈,说来还是我在实际生活中对数学的敏感性不高吧。


2025-12-25 19:07:23
广告
不感兴趣
开通SVIP免广告
  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
现在还不是有时间了,可能要到今年的九月份之后才能真正的恢复前两年的状态。


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我自己编程试了一下,感觉Jeffrey的结果可能是错的。对于他提出来的那个最佳组合,我得到的平均张数是:4.152,而不是3.29张。如下:


我还没有继续往下编,不过从这个结果上看,我估计我能得到与Jeffrey不同的面额组合了。


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
呵呵,因为这里面涉及到的矩阵不是很大,MC运算起来倒是没什么压力。


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我把我得到的面额组合矩阵仔细看了一遍,没发现错误,那么Jeffrey的那个3.29就很可疑了。
最近这段时间我看的文献比较多,渐渐的也学会了怀疑那些已经发表了的结论,往往会有很有意思的收获哈……看来这次也不例外。


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我把Jeffrey的所有结果都验算了一遍,然后发现上面的那个表里没有一个是对的……
不过结论是对的,也就是Jeffrey给出的那个最佳组合确实比我们传统的钞票面额组合在平均需要的张数上要少一点。


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
张数为2的情况:


2025-12-25 19:01:23
广告
不感兴趣
开通SVIP免广告
  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在
http://tieba.baidu.com/p/3216612201
中,我用矩阵的裁剪拼贴的方法得到全组合的方法,其中用到了递归。
这回因为这道题中对组合的奇怪要求,反倒使我得到另外一种计算全组合的方法,没有用到递归。

嗯,Tc()是对任何长度的向量,对给定的元素数(m)和取出元素数(n)给出在该向量相对“下一级”的两元素全组合,Mtc()是用第一个函数进行迭代,最终得到给定元素数和取出元素数的全组合。
不过这个迭代的方法的运行效率很差劲,没有原来的那个递归的方法有效,运行速度慢,而且不能处理比较大的全组合问题。
我现在在想办法在解决Jeffrey问题的过程中,避免出现对全组合遍历,而仅仅使用穷举,这样可以避免在过程中出现非常大的矩阵——就向我前面解决(99,2)的那样。
@loupoo2 ,我比较关心的是你的评价,你认为他得到的那个“3.29”合理吗?我感觉不合理。
@月城公寓寓公 ,你的程序如果方便上传一份,我感觉结果也很奇怪。


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Jeffrey的问题特殊的地方是,你得到的所有组合都必须有1。也就是说最后得到的全组合的矩阵是:stack(1,xxx)这样的形式。


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
嗯,我明白了,你用的是RMB系统,1,2,5,10,20,50来算的哈!不过,用现在的货币面额组合,6种面额的情况,看来还是比Jeffrey的结果要好,他给出的那两个组合我算出来是3.567和3.758,而Jeffrey给出的是2.92。
从@Loupoo2 给出的结果看,我还是没弄明白Jeffrey为什么会用7个元素的向量,并且在没有面额填充的向量值中要填上100。Loupoo2你能解释一下么?


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
还有@月城公寓寓公 ,现在还有2元的RMB吗?我是说近5年,我就没见过2元的RMB了,你给张照片了? :P


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
初步的验算结果是Jeffrey的最佳钞票面额组合好像完全错了。
@Loupoo2 我没看明白你的那个在一定货币面额组合下求其最小平均张数的程序,真的很想知道你的思路。
主要是我验算我这边儿的程序,而且把结构一一检查了一下,没发现哪里计算错了,但是就是没有得到Jeffrey的结果。
我按照我的思路得到的初步结果是这样的:
(1)用给定的货币面额组合,要凑足一定数额的钱,所需要的最小张数是多少。

(2)用给定货币面额的组合,凑足1~99所有数额的钱,最小张数的平均是多少。

(3)这是一个过程公式,做组合用的。

(4)给定最大的数额m,给定张数n,最佳的货币组合是什么。

(5)我编的这个程序的处理效率还是太低,主要是想做到穷举而不遍历,又不想把程序编得太蠢(实际上用嵌套的for循环应该可以做到),结果还是大矩阵的计算了,那就是几百万的大矩阵,很失败。所以这里只给出2种、3种、4种货币组合的结果,5种货币到现在还没算出来呢 :(


  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
嗯, 还有一个法子就是我说的比较蠢的那个——对每一种货币额度数量单独做程序,这样计算速度会稍快一些,因为根本进出现了大循环,没有出现大矩阵,省了一些内存资源。
给出前3个,后面的几个都一样,以此类推就可以了。我没找到怎么把这些相似的明显有规律的程序给整合成1个更智能一些的程序。



嗯,Ntc5、Ntc6、Ntc7都一样。
希望有兴趣的吧友试试看,用迭代或者递归,还是什么法子,使具有这样嵌套for循环的式子变成1个程序。这是件功德无量的事儿!
用这个方法我比较快的算出了Ntc5,用来大概有半小时吧。

ntc6我让机器开了一晚上,第二天早晨起来看仍旧没有出结果呢。算了一下它的组合数,7千万!嗯,ntc7特么有11亿!

我觉得这道题肯定不是用全组合傻算的法子来这么暴力破解的。


2025-12-25 18:55:23
广告
不感兴趣
开通SVIP免广告
  • 朱老剑客
  • 主顾
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@Loupoo2 谢谢哈,你的思路确实好许多。相比之下,我就是个搬砖的……


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 16回复贴,共2页
  • ,跳到 页  
<<返回mathcad吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示