拼凑钱币

给你六种面额 1、5、10、20、50、100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数。
输入描述:
输入包括一个整数n(1 ≤ n ≤ 10000)

输出描述:
输出一个整数,表示不同的组合方案数

输入例子1:
1

输出例子1:
1


import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan = new Scanner(System.in);
        
        while (scan.hasNext()) {
            int n = scan.nextInt();
            long count = f(n);
            System.out.println(count);
        }

    }
    
    //int j = 0; j < coins.length; j++
    public static long f(int n) {
        int[] coins = {1,5,10,20,50,100};
        long[] dp = new long[n + 1];
        dp[0] = 1;
        for (int j = 0; j < coins.length; j++) {
            for (int i = 1; i < dp.length; i++) {
                if (i >= coins[j]) {
                    dp[i] = dp[i] + dp[i - coins[j]];
                }
            }
        }
        return dp[n];
    }

}

你可能感兴趣的:(拼凑钱币)