100元换零钱1元,2元,5元,10元,20元,50元有多少种组合方案

一道笔试题,当时就懵逼了。。。
找到递推公式之后,其实也不难
F(N,M)=F(N,M-1)+F(N-VAL[M],M)
F(N,M)表示 用不超过第M个值的数来表示N 的所有组合方案
举个栗子
我们先看4的组成
4 = 2+2 = 2+1+1 = 1+1+1+1共3种方案
我们再看公式,例如
F(4,6) = F(4,5) + F(4-VAL[6],6) 
= F(4,5) + F(4-50,6)
= F(4,5) + F(-46,6)
= F(4,5)
F(4,5) = F(4,4) + F(4-VAL[5],5)

= F(4,4) + F(4-20,5)
= F(4,4) + F(-16,5)
= F(4,4)
F(4,4) = F(4,3) + F(4-VAL[4],4) 
= F(4,3) + F(4-10,4)
= F(4,3) + F(-6,4)
= F(4,3)
F(4,3) = F(4,2) + F(4-VAL[3],3)

= F(4,2) + F(4-5,3)
= F(4,2) + F(-1,3)
= F(4,2)
F(4,2)  = F(4,1) + F(4-VAL[2],2)

    = F(4,1) + F(4-2,3)
= F(4,1) + F(2,3)
= F(4,1) + F(2,3)

F(4,6) 的所有组合方案其实就是F(4,2)的组合方案,毕竟VAL[3]~VAL[6]均大于4,不可能存在更多的组合方案,

所以,
用不超过第6个值的数(即50元)来表示4元 的所有组合方案【F(4,6)】
等于  用不超过第2个值的数(即2元)来表示4元 的所有组合方案【F(4,2)】
那么,

用不超过第2个值的数(即2元)来表示4元 的所有组合方案【F(4,2)】

又等于
用不超过第1个值的数(即1元)来表示4元 的所有组合方案 
加上 
用不超过第3个值的数(即5元)来表示2元 的所有组合方案【F(4,1)+F(2,3)】

明显F(4,1)所代表的方案就是4=1+1+1+1,即F(4,1)=1

而F(2,3)也可以用上述推导的方式,即F(2,3)=F(2,2)=F(2,1)+F(0,2)=....=F(2,1)+F(0,0)=2
F(0,0)可以理解成用0元来表示0元,这算是1种方案
此时我们就能看出4的组合方案,其实就是
4=2+2
4=2+1+1
【F(4-VAL[2],2),意味着把红色数字减去 ,即F(2,2)代表上面两种方案】
4=1+1+1+1
【F(4,1)代表4=1+1+1+1方案】
代码如下:
int main()
{int val[7] = { 0,1,2,5,10,20,50 };int f[101][7];memset(f, 0, sizeof(f));for (int j = 0; j <= 6; j++)f[0][j] = 1;for (int j = 1; j <= 6; j++){for (int i = 1; i <= 100; i++){if (i - val[j] < 0)f[i][j] = f[i][j - 1];elsef[i][j] = f[i - val[j]][j] + f[i][j - 1];}}//cout << test(0, 100) << endl;//cout << ans << endl;cout << f[100][6] << endl;system("pause");return 0;
}

用1元,2元,5元,10元,20元,50元组合成100元相关推荐

  1. 100元 50元 20元 10元 5元 1元 标准尺寸

    第五套100元面值人民币,长155mm,宽77mm. 每平米可以铺1000 * 1000 / (155 * 77) = 83.787 张 也就是说,相当于房价为8378元每平米. 标准尺寸 (单位:厘 ...

  2. 用1元,2元,5元,10元,20元和50元的纸币组成100元,共有多少种情况

    static void Main(string[] args)         {             int count = 0;             //1元组成的情况,最多有100种   ...

  3. 深入解析之将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法

    要将100元兑换为1元.5元.10元的零钱,请问有多少种兑换方法?这道算法题不知不觉走进了我的世界,引起了我极大的兴趣.现在就将我对它的研究分享出来,供大家点评. 看到这个题目的第一感觉就是一个三元一 ...

  4. 算法笔试题:1元,5元,10元,20元,50元、100元面值人民币组合给定x元的问题

    最近有一道笔试题引起了小伙伴们的激烈讨论. 参考博客 作为算法菜鸟非常感谢大神的分析和举例.博客地址 问题描述 目前市面上的纸币主要有1元,5元,10元,20元,50元.100元六种,如果要买一件商品 ...

  5. C语言一百块钱换成十元20元,把100元人民币换成50元、20元、10元的纸币。计算出有多少种换法?...

    把100元人民币换成50元.20元.10元的纸币.计算出有多少种换法?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 把 ...

  6. c语言兑换100人民币,100 元人民币有几多种换零方式

    100 元人民币有多少种换零方式? 零钱限制为(1,2,5,10,20,50 元). 问题同标题. ------解决思路---------------------- #include #include ...

  7. 打豪车应用:uber详细攻略(附100元优惠码)

    在嘀嘀打车和快的打车交战热闹的时候,美国的打车应用uber进入中国.与在美国以个人司机注册做 Uber 司机为主的模式不同,Uber 在中国采用与租车公司合作.由租车公司提供车辆和司机的模式,同时中文 ...

  8. 100元人民币兑换成1元、2元、5元人名币的所有兑换方案

    编写程序实现输出100元人民币的方案 1. 题目要求: 编写程序实现输出100元人民币兑换成1元.2元.5元人名币的所有兑换方案. 2. 题目分析: (1)题目要求100兑换成1元.2元.5元的人名币 ...

  9. 阿里云MVP携手Gopher China,寻找下一个MVP!申请就送100元代金券!

    "传递技术力量,传承布道精神."阿里云MVP(最有价值专家)第七期全球招募开启,与Gopher China携手,寻找热爱技术.乐于分享.关注个人成长的你! 戳链接,通过[Gophe ...

最新文章

  1. 用Java实现天天酷跑(附源码),这个真的有点强了!
  2. 2021年自然语言处理学习路线!
  3. amd and nvidia gop_抱紧台积电的大腿就是好,AMD不仅CPU领先,显卡也逆袭有望
  4. sklearn中的验证
  5. 如何给SAP云平台购买的账号分配Process Integration服务
  6. LabVIEW串口接收实例
  7. collect的功能是什么?其底层如何实现的?_为什么你要用 Spring ?
  8. springboot细节挖掘(jar和war打包)
  9. js初化加载页面时ajax会调用两次的原因_在前端开发中,有哪些因素会导致页面卡顿
  10. springboot项目如何使用HikariCP(国际主流)做为数据源,gradle构建工具
  11. oracle--存储过程--bai
  12. limit where group by having select
  13. [转]EVC++开发实例之浏览器窗口(by fllsoft)
  14. java filter的类_Java FilterOutputStream类
  15. 晓月antivirV8P绿色汉化扫描自由版
  16. Android Studio快捷键设置 (实现原eclipse ctrl+m 代码全屏的效果)
  17. 九爷带你部署Mfs分布式文件系统
  18. jhu研究生录取 计算机,背景一般获约翰霍普金斯大学JHU信息安全硕士录取
  19. 首师大附中互测题:LJX的校园:入学典礼【C003】
  20. html 条纹背景,CSS3 一组条纹背景图案

热门文章

  1. 初中计算机教师资格证教案,初中信息技术教师资格证面试真题
  2. 计算机的发展历史及特点,计算机的发展历史、特点及分类
  3. 马化腾在知乎亲自向网友提问,不知能否解开他的人生疑惑?
  4. 第二届腾讯Light·公益创新挑战赛启动,三大赛题聚焦可持续发展社会价值
  5. 数字IC手撕代码-边沿检测(上升沿、下降沿、双边沿)
  6. 深度学习与Pytorch入门实战(一)Pytorch张量操作
  7. 阿里云AIoT物联网平台如何实现设备全球就近接入——设备接入类
  8. torch.backends.cudnn.benchmark = true的作用
  9. Synopsys新思科技2023“向新力”秋季校园招聘内推
  10. 敏捷方法的价值观与原则汇编