常考经典算法---动态规划(拼凑面额、背包问题)
2017-09-09 11:40
1426 查看
<1>拼凑面额
给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N员(N为0-10000的非负整数)的不同组合的个数。
输入描述:
输入为一个数字N,即需要拼凑的面额
输出描述:
输出也是一个数字,为组成N的组合个数。
示例1
输入
5
输出
2
链接:https://www.nowcoder.com/questionTerminal/14cf13771cd840849a402b848b5c1c93
来源:牛客网
链接:https://www.nowcoder.com/questionTerminal/14cf13771cd840849a402b848b5c1c93
来源:牛客网
一个典型的dp问题,参照了大神的思路加上百度dp思想,总结一下:
1.dp概念:简单来说就是将原来的问题分解成多个子问题,然后将子问题一个一个的解决,最终问题的规模变小了;
2.本题可以使用dp的思想来做,合成一个面值为n的组合数,可以看成合成n-1,n-5,n-10,n-20,n-50,n-100五个面值的组合数之和,然后将问题细分化,最终可以求出结果,其中我们知道,面值为1的组合数为1
贴代码:
给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N员(N为0-10000的非负整数)的不同组合的个数。
输入描述:
输入为一个数字N,即需要拼凑的面额
输出描述:
输出也是一个数字,为组成N的组合个数。
示例1
输入
5
输出
2
链接:https://www.nowcoder.com/questionTerminal/14cf13771cd840849a402b848b5c1c93
来源:牛客网
链接:https://www.nowcoder.com/questionTerminal/14cf13771cd840849a402b848b5c1c93
来源:牛客网
一个典型的dp问题,参照了大神的思路加上百度dp思想,总结一下:
1.dp概念:简单来说就是将原来的问题分解成多个子问题,然后将子问题一个一个的解决,最终问题的规模变小了;
2.本题可以使用dp的思想来做,合成一个面值为n的组合数,可以看成合成n-1,n-5,n-10,n-20,n-50,n-100五个面值的组合数之和,然后将问题细分化,最终可以求出结果,其中我们知道,面值为1的组合数为1
贴代码:
链接:https://www.nowcoder.com/questionTerminal/14cf13771cd840849a402b848b5c1c93 来源:牛客网 import java.util.Scanner; public class StringUtil { //拼凑面额 public static void main(String[] args) { Scanner in = new Scanner(System.in); int arr[] = {1,5,10,20,50,100}; while(in.hasNext()){ int n = in.nextInt(); long res[] = new long[n+1]; res[0] = 1L; for(int i=0; i<arr.length; i++){ for(int j=1; j<=n; j++){ if(j >= arr[i]){ res[j] += res[j-arr[i]]; } } } System.out.println(res ); } } }
相关文章推荐
- 经典算法题05-完全背包问题
- 经典算法之—背包问题
- 算法导论16.2-2--动态规划(0-1背包问题)
- 《面试--动态规划》 ---五种经典的算法问题
- 经典算法之背包问题(0-1背包)
- 算法导论16.2-2--动态规划(0-1背包问题)
- [算法]动态规划之背包问题
- 夕拾算法进阶篇:18)装箱问题 (01背包_动态规划DP)
- 算法竞赛入门经典:第九章 动态规划初步 9.2完全01背包
- 算法java实现--动态规划--0-1背包问题
- 经典算法之背包问题
- 本周算法:背包问题(动态规划)
- 算法-动态规划=背包问题
- 0019算法笔记——【动态规划】0-1背包问题
- 0-1背包问题入门小结 动态规划(DP)经典题目 POJ324 POJ1276
- 0-1背包 (算法竞赛入门经典0-1背包问题)
- 动态规划 - 0-1背包问题的算法优化
- 【算法导论学习-29】动态规划经典问题02:最长公共子序列问题(Longest common subsequence,LCS)
- 经典算法之背包问题
- 【算法数据结构Java实现】Java实现动态规划(背包问题)