练习题14:拼凑面额

题目描述

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

输入描述:

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

输出描述:

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

Java解法:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class test05 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int cnt = Integer.parseInt(br.readLine());
System.out.println(deal(cnt));
}

private static long deal(int cnt) {
int [] table = {1, 5, 10, 20, 50, 100};
long [] dp = new long[cnt + 1];
dp[0] = 1;
for (int i : table) {
for (int j = i; j < dp.length; j++) {
dp[j] += dp[j - i];
}
}
return dp[cnt];
}
}

猜你喜欢

转载自www.cnblogs.com/HwyStudy/p/9194541.html