#LAISIR58. 糖果分配(Candy Distribution)
糖果分配(Candy Distribution)
🍬 題目名稱:糖果分配(Candy Distribution)
【題目描述】 老師有 n 位可區分的學生(編號為 1 到 n),以及 m 顆可區分的糖果。每顆糖果都有一個甜度值。老師想把所有糖果都分給學生,但必須遵守以下規則:
- 每顆糖果必須分配給恰好一位學生
- 糖果不能丟棄,必須全部分完
- 每位學生可以分得 0 顆或多顆糖果
- 每位學生獲得的糖果甜度總和不能超過上限 K
請計算有多少種合法的分配方式。
【輸入格式】
- 第一行:三個整數 n, m, K
- 1 ≤ n ≤ 6(學生數)
- 1 ≤ m ≤ 10(糖果數)
- 1 ≤ K ≤ 20(甜度上限)
- 第二行:m 個整數,表示每顆糖果的甜度值
- 每個甜度值介於 1 到 K 之間
【輸出格式】
- 一個整數,表示合法分配方案的總數
【輸入樣例 1】
2 3 5
1 2 3
【輸出樣例 1】
6
【樣例 1 解釋】 有 2 位可區分的學生,3 顆可區分的糖果(甜度 1, 2, 3),甜度上限 K=5。
合法分配方案:
- 學生1:糖果{1,2}(甜度和=3),學生2:糖果{3}(甜度和=3)
- 學生1:糖果{1,3}(甜度和=4),學生2:糖果{2}(甜度和=2)
- 學生1:糖果{2,3}(甜度和=5),學生2:糖果{1}(甜度和=1)
- 學生1:糖果{3}(甜度和=3),學生2:糖果{1,2}(甜度和=3)
- 學生1:糖果{2}(甜度和=2),學生2:糖果{1,3}(甜度和=4)
- 學生1:糖果{1}(甜度和=1),學生2:糖果{2,3}(甜度和=5)
不合法的例子:
- 學生1:糖果{1,2,3}(甜度和=6 > 5)
- 學生2:糖果{1,2,3}(甜度和=6 > 5)
總共有 6 種合法分配方式。
【輸入樣例 2】
3 4 4
1 2 3 1
【輸出樣例 2】
36
【數據範圍】
- 學生數 n:1 到 6
- 糖果數 m:1 到 10
- 甜度上限 K:1 到 20
- 每顆糖果甜度:1 到 K
- 保證至少有一種合法分配方案
【重要說明】
- ✅ 學生是可區分的(學生1 ≠ 學生2)
- ✅ 糖果是可區分的(糖果A ≠ 糖果B)
- ✅ 分配方案由「每顆糖果分配給哪個學生」決定
- ✅ 不同的分配順序視為不同的方案
Related
In following homework: