换硬币 - 完全背包计数问题(模板题)
Submit solution
Points:
160
Time limit:
1.0s
Memory limit:
40M
Author:
Problem type
Allowed languages
C, C++
🪙 换硬币 - 完全背包计数问题(模板题)
你有若干种面额的金币,每种金币的数量是无限的。请你计算:凑出总金额 m 的所有不同组合方案的数量。
如果无法凑出该金额,输出 0。
组合的顺序无关。例如:1+2 和 2+1 被认为是同一种方案。
📥 输入格式
第一行输入两个整数 n 和 m,分别代表金币种类的数量和目标金额。
第二行输入 n 个正整数,表示每种金币的面额。
📤 输出格式
输出一个整数,表示组合方案总数。
由于数值过大结果请对 \(10^9+7\) 进行取模后输出
🧪 示例 1
输入:
3 5
1 2 5
输出:
4
解释:
共有 4 种方法可以组成金额 5(顺序无关):
- 1+1+1+1+1
- 1+1+1+2
- 1+2+2
- 5
🧪 示例 2
输入:
1 3
2
输出:
0
🧪 示例 3
输入:
1 0
1
输出:
1
解释:金额为 0 的方案数是 1(即什么都不选)。
✅ 数据范围
- \( 1 \le n \le 12 \)
- \(1 \le coins[i] \le 2^{31} - 1 \)
- \(0 \le m \le 10^4\)
Comments