给你六种面额 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];
}
}
网友评论