问题描述
有 n n n种物品,第 i i i种物品有 a i a_i ai个。不同种类的物品可以互相区分,但相同种类的无法区分。从这些物品中取出 m m m个的话,有多少种取法?
限制条件:
1、 1 ≤ n ≤ 1000 1 \le n \le 1000 1≤n≤1000
2、 1 ≤ m ≤ 1000 1 \le m \le 1000 1≤m≤1000
3、 1 ≤ a i ≤ 1000 1 \le a_i \le 1000 1≤ai≤1000
样例
输入:
n = 3 n=3 n=3
m = 3 m=3 m=3
a = [ 1 , 2 , 3 ] a=[1,2,3] a=[1,2,3]
输出:
6 : ( 0 + 0 + 3 , 0 + 1 + 2 , 0 + 2 + 1 , 1 + 0 + 2 , 1 + 1 + 1 , 1 + 2 + 0 ) 6 :(0+0+3,0+1+2,0+2+1,1+0+2,1+1+1,1+2+0) 6:(0+0+3,0+1+2,0+2+1,1+0+2,1+1+1,1+2+0)
使用动态规划求解
定义: d p [ i + 1 ] [ j ] : = 从 前 i 种 物 品 中 取 出 j 个 的 组 合 数 dp[i+1][j]:=从前i种物品中取出j个的组合数 dp[i+1][j]:=从前i种物品中取出j个的组合数
**递推关系:**为了从前 i i i种物品中取出 j j j个,可以从前 i − 1 i-1 i−1个物品中取出 j − k j-k j−k个,再从第 i i