1491 取物品

来源:互联网 发布:solus linux命令 编辑:程序博客网 时间:2024/04/28 06:40
题目描述 Description

现在有n个物品(有可能相同),请您编程计算从中取k个有多少种不同的取法。

输入描述 Input Description

输入文件有两行,第一行包含两个整数n,k(2<=n<=30,0<=k<=n)。第二行,包含n个整数表示物品的编号(范围1..1000)。编号相同的物品看作同一种物品。

输出描述 Output Description

输出仅一个整数,即方案数。

样例输入 Sample Input

5 2

1 2 3 4 5

样例输出 Sample Output

10


思路:

对于i种数(某个数会重复),从里面取k个的取法, 

分为从 i - 1种中取 k 个, 第i种中取 0个,

分为从 i - 1种中取 k-1 个, 第i种中取 1 个,

.

.

分为从 i - 1种中取  0 个, 第i种中取  k 个。

则 以f[i][j] 表示从i种数中取k个的总取法,那么 f[i][j] = ∑(k=0...a[i]) f[i-1][j-k] ; a[i]为第i种物品的数量。且 k <= j, i = 1...数字种数, 

j = 1 ... k  .当 j = 0 f[i][j] = 1  

0 0
原创粉丝点击