dp[i][j]表示前i种花摆j盆的个数。
状态转移方程为 dp[i][j]=dp[i][j]+dp[i-1][j-k]
0<=k<=min(a[i],j)
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define int long long
int n,m,dp[500][500],a[500],mod=1e6+7;
signed main(){
ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=0;i<=n;i++)dp[i][0]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int k=0;k<=min(a[i],j);k++){
dp[i][j]=(dp[i][j]+dp[i-1][j-k])%mod;
}
}
}
/*for(int i=1;i<=n;i++){
for(int j=0;j<=m;j++){
cout<<dp[i][j]<<' ';
}
cout<<endl;
}*/
cout<<dp[n][m]<<endl;
return 0;
}