本题就是《挑战程序设计竞赛》多重集合组合数的模板题。 用$d[i][j]$表示从前$i$种物品中取出$j$个的组合数,可以先从前$i-1$种物品取出$j-k$个,再从第$i$种物品取出$k$个添加进来,则状态转移方程是: $$ d[i][j] = \sum_{k =0}^{\min(j, a[i])} d[i-1][j - k] \ if : j...