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. Android M 权限
  2. 高等数学下-赵立军-北京大学出版社-题解-练习12.2
  3. Object C学习笔记13-Dictionary字典
  4. aspose转pdf横版_aspose实现Office转Pdf
  5. Tomcat版本与Servlet、JSP等版本的支持关系
  6. 中国四丁基尿素(TBU)市场趋势报告、技术动态创新及市场预测
  7. mysqlgbk不支持中文吗_【转载】mysql 不支持中文解决办法
  8. javascript一些基础知识
  9. asp.net MVC遇到的问题
  10. 主引导扇区(MBR)释疑
  11. 那些让人惊叹的命令执行效果
  12. 智慧农业:农业物联网实施方案
  13. 夏普Sharp MX-C3581R 一体机驱动
  14. 51单片机——独立按键
  15. 三种形式全排列——指数型、排列型、组合型类型题目汇总
  16. 【矩阵论】矩阵微积分的一些公式
  17. Fabric.js IText 手动设置斜体
  18. 用Python快速分析和预测股票价格
  19. 关于在袁教授blog中的”呛袁教授“的争论
  20. 计算机组成原理ACC MQ,计算机组成原理讲案第一章.ppt

热门文章

  1. 【分析】GPS/RTK+蓝牙融合定位系统价格
  2. ImageNet2012数据集下载
  3. 17岁高中生证明数学难题,「他的论文值得任何数学家为之自豪」
  4. Win7系统下载chromedriver.exe驱动的步骤
  5. vostro3470装win7_戴尔(dell)成就3470台式机装win7系统及bios设置(支持
  6. 戴尔微型计算机主机怎么拆,简单拆解内部探秘_戴尔台式电脑_台式电脑评测-中关村在线...
  7. Navicat ODBC驱动器管理器:未发现数据源名称并且未指定默认驱动程序
  8. linux pacemaker.log,Pacemaker部署
  9. 仿苹果手机闹钟_模仿闹钟app下载
  10. 工业品品牌,是时候该重新定义了!