C++如何学习会让生活更没好

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)

搜索

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632