文章目录

  • 1. 题目
  • 2. 解题

1. 题目

硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算 n 分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)

示例1:输入: n = 5输出:2解释: 有两种方式可以凑成总金额:
5=5
5=1+1+1+1+1示例2:输入: n = 10输出:4解释: 有四种方式可以凑成总金额:
10=10
10=5+5
10=5+1+1+1+1+1
10=1+1+1+1+1+1+1+1+1+1说明:
0 <= n (总金额) <= 1000000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/coin-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 错误解法,下面解法dp[6] = 3, 1*6, 1+5, 5+1
class Solution {public:int waysToChange(int n) {int coin[4] = {1,5,10,25};vector<int> dp(n+1,0);dp[0] = 1;int i, j;for(i = 0; i <= n; ++i){if(dp[i]!= 0)for(j = 0; j < 4; ++j)//coin在内层循环,错误{if(i+coin[j] <= n)dp[i+coin[j]] = (dp[i+coin[j]] + dp[i])%1000000007;}}return dp[n]%1000000007;}
};
  • 跟顺序无关,硬币数量无限,先只拿一种硬币,有多少种可能的状态
  • 在上面状态下,拿第二种硬币,得到新的状态
0 1 2 3 4 5 6 7 8 9 10
----------------------coin[4] = {1,5,10,25}
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 2 2 2 2 2 3
1 1 1 1 1 2 2 2 2 2 4
1 1 1 1 1 2 2 2 2 2 4
class Solution {public:int waysToChange(int n) {int coin[4] = {1,5,10,25};vector<int> dp(n+1,0);dp[0] = 1;int i, j, money;for(i = 0; i < 4; ++i){for(j = 0; j <= n; ++j){if(dp[j]!= 0 && j+coin[i] <= n)dp[j+coin[i]] = (dp[j+coin[i]] + dp[j])%1000000007;}}return dp[n]%1000000007;}
};

程序员面试金典 - 面试题 08.11. 硬币(背包DP)相关推荐

  1. 程序员面试金典 - 面试题 08.13. 堆箱子(DP)

    1. 题目 堆箱子.给你一堆n个箱子,箱子宽 wi.深 di.高 hi. 箱子不能翻转,将箱子堆起来时,下面箱子的宽度.高度和深度必须大于上面的箱子. 实现一种方法,搭出最高的一堆箱子.箱堆的高度为每 ...

  2. 程序员面试金典 - 面试题 10.11. 峰与谷

    题目难度: 中等 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 在一个整数数组中,"峰& ...

  3. [Leetcode][程序员面试金典][面试题16.11][JAVA][跳水板][数学][动态规划]

    [问题描述][简单] [解答思路] 边界问题 k=0 ,不能产生跳水板,返回空数组 shorter 等于longer,只有一种跳水板,返回longerk 思路 一般情况,k块木板,k种可能 跳水板的长 ...

  4. [Leetcode][程序员面试金典][面试题08.03][JAVA][魔术索引][递归][优化]

    [问题描述][简单] [解答思路] 1. 逐个查找 时间复杂度:O(N) 空间复杂度:O(1) public int findMagicIndex(int[] nums) {for (int i = ...

  5. 程序员面试金典 - 面试题 08.02. 迷路的机器人(DFS/动态规划)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 动态规划 1. 题目 设想有个机器人坐在一个网格的左上角,网格 r 行 c 列. 机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍 ...

  6. 程序员面试金典 - 面试题 08.14. 布尔运算(区间动态规划)

    1. 题目 给定一个布尔表达式和一个期望的布尔结果 result,布尔表达式由 0 (false).1 (true).& (AND). | (OR) 和 ^ (XOR) 符号组成. 实现一个函 ...

  7. 程序员面试金典 - 面试题 10.11. 峰与谷(排序/不排序)

    1. 题目 在一个整数数组中,"峰"是大于或等于相邻整数的元素,相应地,"谷"是小于或等于相邻整数的元素. 例如,在数组{5, 8, 2, 6, 3, 4, 3 ...

  8. 程序员面试金典 - 面试题 08.05. 递归乘法(位运算)

    1. 题目 递归乘法. 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘. 可以使用加号.减号.位移,但要吝啬一些. 示例1:输入:A = 1, B = 10输出:10示例2:输入:A = ...

  9. 程序员面试金典 - 面试题 08.07. 无重复字符串的排列组合(回溯)

    1. 题目 无重复字符串的排列组合.编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同. 示例1:输入:S = "qwe"输出:["qwe", & ...

最新文章

  1. 【代数结构】群 ( 群的定义 | 群的基本性质 | 群的证明方法 | 交换群 )
  2. centos 6.2用yum安装中文输入法
  3. 国家卫计委倡导健康生活理念:每天发呆5分钟
  4. 【VB.NET】测验题目Quiz3
  5. Qt文档阅读笔记|Qt实践| HTTPS知识点-获取某站点SSL证书
  6. C#中的简单工厂设计模式示例
  7. opencv与vs的版本
  8. 2021江苏省高考成绩排名查询,江苏高考成绩排名查询系统,2021年江苏个人成绩一分一段表...
  9. SpringMVC 生命周期
  10. matlab 输出 syms,matlab中latex和syms的完美结合
  11. ppt打不开服务器上的文件,PPT文件打不开的原因及解决方法
  12. windows7下使用mingw和msys编译JEPG源代码
  13. 【转载】贵妃醉酒百态(原创)
  14. 数据可视化——echarts
  15. 教你怎样查询快递查询单号并保存物流信息
  16. 华为手机 从服务器获取安装包信息,华为openGauss 获取并校验安装包
  17. 2022年软考可以参加哪些科目考试?熟知
  18. 硬盘分区表格式GUID和MBR知识普及
  19. 招商头条:北京市集中力量补齐5G产业短板;投资50亿元的格力成都产业园开工
  20. 按键精灵 屏蔽小精灵界面 改进实现

热门文章

  1. 开源oa_圈子哥推荐一款基于 Spring Boot 开发 OA 开源产品,学习/搞外快都是不二选择!...
  2. Linux:I/O多路转接之select(有图有代码有真相!!!)
  3. java游戏运行环境_Java运行环境
  4. S5PV210的地址映射图
  5. 《C++标准程序库》学习笔记5 — 第七章
  6. MapReduce编程中常用的字符操作
  7. 动态路由选择协议(二)距离矢量路由选择协议
  8. 【项目总结】如何获取地图上的所有POI
  9. c#让电脑锁定、注销、关机
  10. container_of实例