C++如何学习好
C++如何学习坏
小A有n枚硬币,现在要买一样不超过m元的商品,他不想被找零,同时又不想带太多的硬币,且硬币可以重复,现在已知这n枚硬币的价值,请问最少需要多少硬币就能组合成所有可能的价格?
更没好还是更美好?
度娘让你更美好
现成答案:
https://wenku.baidu.com/view/c2a5bc6ae618964bcf84b9d528ea81c758f52e3e.html
https://blog.csdn.net/qq_43056810/article/details/120959766
log2^(m-1) 种或对前面log2^(m-1)取整再+1
用二进制式思想
我引了我的博客:
我们如果用几个基础数字来表示任意的数字
eg:
一个数是七,我们可以使用七个1来表示:
7=1+1+1+1+1+1+1;
但这使用加法次数未免也太多了吧!(如果是10000就需要10000次加法)
那么,还有什么高效的表达呢?
于是我们引入了二进制
任何一个十进制数在转换为二进制时都由‘0’,‘1’组成即都可以用2^0,2^1,2^2,2^3……表示
,即 7=1+2+4;七次变为了三次
但这种解释仍存在一些疑惑之处
如果一个数不能完全用正好的二的次幂表示怎么办
那么剩下的数就拿出来单独存放
8-1-2-4=1;还剩一个1
那么不妨让8就由四个数表示:1 2 4 1;
同理:
9 :1 2 4 2; 12:1 2 4 5
————————————————
版权声明:本文为CSDN博主「琦悠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_73258319/article/details/127257060
自然 m元就最少需要log2^(m-1)
搜索
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!