一、题目
硬币问题:
Given an infinite number of quarters (25 cents), dimes (10 cents), nickels (5 cents) and pennies (1 cent), find how many ways to represent n cents.

二、思路及其代码实现
思路一:多路递归
下面两种方法是同一思路的不同实现,练习的时候顺手打的。
实现(一)

/*** way01——多路递归1* @param coins 面值数组(需正序排列)* @param n 凑n* @param current 当前判断的面值下标  从0开始:小面值到大面值* @return 组合次数*/static int count = 0;public static int recursion(int[] coins, int n, int current) {if (n < 0) return 0;//考虑键入n负数情况if (n == 0) {//刚好凑整,累计次数count++;return count;}if (n < coins[current]) return 0;//当要n<当前面值时,说明此种选择无效if (current == coins.length) return 0;//若current越界都未达到n==0的情况,则此种选择无效for (int i = 0; i <= n / coins[current]; i++) {//当前面值个数可选范围:0——n/coins[current]recursion(coins,n - i * coins[current],current + 1);}return count;}

实现(二)

 /*** way02——多路递归2* @param coins 需正序排列* @param n* @param current 从coins.length开始:大面值到小面值* @return*/public static int recursion02(int[] coins, int n, int current) {if (n < 0) return 0;//考虑键入n负数情况int amount = 0;if (current == 0) return 1;//current==0,面值为1,可凑整n,此种选择有效。for (int i = 0; i <= n / coins[current]; i++) {//当前面值个数可选范围:0——n/coins[current]amount += recursion02(coins,n - i * coins[current],current - 1);}return amount;}
}

思路二:DFS

三、同类题目
1、著名编程网站ProjectEuler:
假设我们有8种不同面值的硬币{1, 2, 5, 10, 20, 50, 100, 200} ,用这些硬币组合构成一个给定的数值n。
例如n=200,那么一种可能的组合方式为200 = 3 * 1 + 1 * 2+ 1 * 5 + 2 * 20 + 1 * 50 + 1 * 100。
问总共有多少种可能的组合方式?

2、华为面试题:
1分2分5分的硬币三种,组合成1角, 共有多少种组合
eg: 1x + 2y+ 5z = 10

3、创新工厂笔试题:
有1分,2分,5分, 10分四种硬币,每种硬币数量无限,给定n分钱,有多少组合可以组成n分钱。

【cc150】 硬币问题相关推荐

  1. LeetCode简单题之排列硬币

    题目 你总共有 n 枚硬币,并计划将它们按阶梯状排列.对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币.阶梯的最后一行 可能 是不完整的. 给你一个数字 n ,计算并返回可形成 完整阶 ...

  2. OpenCV(实战)二值图颜色填充(彩色图形、硬币)

    目录 一.彩色图形填充 1.初始效果展示 2.试错过程: 1.试错1:锐化显示所有图片 2.试错2:用礼帽提取出明亮部分 3.正确方式:直接对图片亮度增强(不用形态学处理) 总代码 二.硬币填充 1. ...

  3. OpenCV(26)图像分割 -- 距离变换与分水岭算法(硬币检测、扑克牌检测、车道检测)

    目录 一.基础理论 1.思想 2.原理 二.分水岭实战:硬币 步骤归纳 1.把原图像转二值图 2.开运算去噪 3.确定背景区域(膨胀)(得到背景/最大连通域) 4.确定前景区域(距离变换) (分离)( ...

  4. [bzoj1042][HAOI2008]硬币购物

    有三种硬币,每种有自己的币值. 然后有n次询问,每次都给出每种硬币的数量和要付的钱s,求有多少种付法.n<=1000 s<=100000 ------ 不考虑限制,就是个简单dp.... ...

  5. 关于60枚一分两分五分硬币凑成一块钱的解决方法

    关于60枚一分两分五分硬币凑成一块钱的解决方法 一.强行三重for循环 #include<stdio.h> int main() {int a, b, c;for (a = 1; a &l ...

  6. BZOJ1042 [HAOI2008]硬币购物

    Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买s i的价值的东西.请问每次有多少种付款方法. Input 第 ...

  7. HDU 2566 统计硬币

    统计硬币 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissio ...

  8. 硬币(计算n分有几种表示法)

    硬币.给定数量不限的硬币,币值为25分.10分.5分和1分,编写代码计算n分有几种表示法.(结果可能会很大,你需要将结果模上1000000007) 示例1: 输入: n = 5输出:2解释: 有两种方 ...

  9. 2017(秋)软工作业: (2)硬币游戏—— 代码分析与改进

    作业目的 Python 程序阅读理解 学习Python 编码风格指南中译版(Google SOC), 改进Python程序 如何设计游戏规则,使得慈善事业可持续. 地铁口放置硬币箱(初始值500硬币) ...

最新文章

  1. Python 多线程总结(1)- thread 模块
  2. Ext学习-前后交互模式介绍
  3. R语言计算每个分组的行数并将结果添加到dataframe中实战
  4. 【webpack】webpack的基本使用
  5. IIS中架设二级域名网站
  6. java操作LINUX上文件,设置权限问题
  7. CSS3选择器(二)--表单
  8. Android Studio 安装配置问题总结
  9. 全排列及相关扩展算法(六)——全排列最蛋疼的算法:邻位对换法
  10. hacktoberfest_我刚刚得到了免费的Hacktoberfest衬衫。 这是获取您的商品的快速方法。
  11. 并发编程的数据竞争问题以及解决之道
  12. python归纳算法_【Python算法】归纳、递归、归简
  13. 关于代码整理重构小记
  14. PHP统计订单表,订单售后表金额
  15. pip:你真的熟悉怎么用了吗?
  16. mysql 误删表 恢复数据_MySQL误删数据或者误清空表恢复
  17. 色彩构成与搭配——人对色彩的感觉
  18. python下载安装图文教程-Pycharm下载安装图文教程
  19. java curator_关于Curator学习过程问题
  20. 计算机c语言入门.ppt,计算机c语言入门经典

热门文章

  1. RabbitMQ(两天掌握之第一天)
  2. Django项目之Web端电商网站的实战开发(一)
  3. ACMNO.1将China译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.如,字母A后面第4个字母是E.E代替A。因此,China应译为Glmre。
  4. 基于2D SDF的体积字实现
  5. python命令行参数 空格_Python - 命令行参数
  6. CV目标检测 Task04:不讲武德-炼丹与品尝 终于,神功初成,可以开始施展拳脚了 打卡笔记
  7. QQ空间留言灌水 小demo 不要太当真 玩玩就行
  8. 连连看读游戏界面的图
  9. RLE压缩算法C#详细教程
  10. 【已解决】当出现导入插件出现 “Could not find a declaration file for module ‘插件名‘“