描述小明的花店新开张为了吸引顾客他想在花店的门口摆上一排花共 m 盆。通过调查顾客的喜好小明列出了顾客最喜欢的 n 种花从 1 到 n 标号。为了在门口展出更多种花规定第 i 种花不能超过a_i盆。摆花时同一种花放在一起且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算一共有多少种不同的摆花方案。输入描述第一行包含两个正整数 n 和 m中间用一个空格隔开。第二行有 n 个整数每两个整数之间
#include
const int MOD = 1000007;
int main() {
int n, m;
cin >> n >> m;
vector
vector<vector<int>> dp(n+1, vector<int>(m+1, 0));
dp[0][0] = 1;
for (int i = 1; i <= n; ++i) {
for (int j = 0; j <= m; ++j) {
for (int k = 0; k <= min(j, a[i-1]); ++k) {
dp[i][j] += dp[i-1][j-k];
dp[i][j] %= MOD;
}
}
}
cout << dp[n][m] << endl;
return 0;
原文地址: http://www.cveoy.top/t/topic/iPez 著作权归作者所有。请勿转载和采集!