程序员面试金典 - 面试题 08.11. 硬币(背包DP)
文章目录
- 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)相关推荐
- 程序员面试金典 - 面试题 08.13. 堆箱子(DP)
1. 题目 堆箱子.给你一堆n个箱子,箱子宽 wi.深 di.高 hi. 箱子不能翻转,将箱子堆起来时,下面箱子的宽度.高度和深度必须大于上面的箱子. 实现一种方法,搭出最高的一堆箱子.箱堆的高度为每 ...
- 程序员面试金典 - 面试题 10.11. 峰与谷
题目难度: 中等 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 在一个整数数组中,"峰& ...
- [Leetcode][程序员面试金典][面试题16.11][JAVA][跳水板][数学][动态规划]
[问题描述][简单] [解答思路] 边界问题 k=0 ,不能产生跳水板,返回空数组 shorter 等于longer,只有一种跳水板,返回longerk 思路 一般情况,k块木板,k种可能 跳水板的长 ...
- [Leetcode][程序员面试金典][面试题08.03][JAVA][魔术索引][递归][优化]
[问题描述][简单] [解答思路] 1. 逐个查找 时间复杂度:O(N) 空间复杂度:O(1) public int findMagicIndex(int[] nums) {for (int i = ...
- 程序员面试金典 - 面试题 08.02. 迷路的机器人(DFS/动态规划)
文章目录 1. 题目 2. 解题 2.1 DFS 2.2 动态规划 1. 题目 设想有个机器人坐在一个网格的左上角,网格 r 行 c 列. 机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍 ...
- 程序员面试金典 - 面试题 08.14. 布尔运算(区间动态规划)
1. 题目 给定一个布尔表达式和一个期望的布尔结果 result,布尔表达式由 0 (false).1 (true).& (AND). | (OR) 和 ^ (XOR) 符号组成. 实现一个函 ...
- 程序员面试金典 - 面试题 10.11. 峰与谷(排序/不排序)
1. 题目 在一个整数数组中,"峰"是大于或等于相邻整数的元素,相应地,"谷"是小于或等于相邻整数的元素. 例如,在数组{5, 8, 2, 6, 3, 4, 3 ...
- 程序员面试金典 - 面试题 08.05. 递归乘法(位运算)
1. 题目 递归乘法. 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘. 可以使用加号.减号.位移,但要吝啬一些. 示例1:输入:A = 1, B = 10输出:10示例2:输入:A = ...
- 程序员面试金典 - 面试题 08.07. 无重复字符串的排列组合(回溯)
1. 题目 无重复字符串的排列组合.编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同. 示例1:输入:S = "qwe"输出:["qwe", & ...
最新文章
- 【代数结构】群 ( 群的定义 | 群的基本性质 | 群的证明方法 | 交换群 )
- centos 6.2用yum安装中文输入法
- 国家卫计委倡导健康生活理念:每天发呆5分钟
- 【VB.NET】测验题目Quiz3
- Qt文档阅读笔记|Qt实践| HTTPS知识点-获取某站点SSL证书
- C#中的简单工厂设计模式示例
- opencv与vs的版本
- 2021江苏省高考成绩排名查询,江苏高考成绩排名查询系统,2021年江苏个人成绩一分一段表...
- SpringMVC 生命周期
- matlab 输出 syms,matlab中latex和syms的完美结合
- ppt打不开服务器上的文件,PPT文件打不开的原因及解决方法
- windows7下使用mingw和msys编译JEPG源代码
- 【转载】贵妃醉酒百态(原创)
- 数据可视化——echarts
- 教你怎样查询快递查询单号并保存物流信息
- 华为手机 从服务器获取安装包信息,华为openGauss 获取并校验安装包
- 2022年软考可以参加哪些科目考试?熟知
- 硬盘分区表格式GUID和MBR知识普及
- 招商头条:北京市集中力量补齐5G产业短板;投资50亿元的格力成都产业园开工
- 按键精灵 屏蔽小精灵界面 改进实现