• 拼凑面额(动态规划)


    题目描述

    给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N员(N为0-10000的非负整数)的不同组合的个数。

    输入描述:

    输入为一个数字N,即需要拼凑的面额

    输出描述:

    输出也是一个数字,为组成N的组合个数。
    示例1

    输入

    5
    

    输出

    2
     1 import java.util.Scanner;
     2 /**
     3  * 
     4  *  拼凑面额
     5  *     动态规划
     6  *         横坐标: 1——n
     7  *         纵坐标:  面值
     8  *        值:  种类数       
     9  * @author Dell
    10  *
    11  */
    12 public class Main{
    13 public static void main(String[] args) {
    14     Scanner sc= new Scanner(System.in);
    15     int n = sc.nextInt();
    16     long[] dp = new long[n+1];
    17     // 初始化
    18     for (int i = 0; i < dp.length; i++) {
    19         dp[i] = 0;
    20     }
    21     int[] a = {1,5,10,20,50,100};
    22     // 装入0
    23     dp[0] = 1;
    24      // 动态规划
    25     for (int i = 0; i < a.length; i++) {
    26     for (int j = 1; j < dp.length; j++) {
    27             if (j>=a[i]) {    
    28                 dp[j] = dp[j]+dp[j-a[i]];
    29             }
    30         }
    31     }
    32     System.out.println(dp[n]);
    33 }
    34 }
  • 相关阅读:
    windows下的SASS/Compass的安装与卸载
    玩转HTML5移动页面(优化篇)
    小谈数组去重
    前端问题解答
    JavaScript使用封装
    JavaScript使用接口
    JavaScript精要(系列)
    JavaScript DOM节点和文档类型
    JavaScript数组类型
    JavaScript函数表达式
  • 原文地址:https://www.cnblogs.com/the-wang/p/8981472.html
Copyright © 2020-2023  润新知