题目:
分析:很好,想到了背包,但是初始状态错了??????状态转移是对的。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n;
cin>>m>>n;
int A[m+1];
A[0]=0;
for(int i=1;i<=m;i++) cin>>A[i];
int D[n+1][m+1];
memset(D,0,sizeof(D));
for(int i=0,j=0;i<m+1;i++)
{
D[0][i]=1;
}
for(int i=1;i<n+1;i++)
for(int j=1;j<m+1;j++)
{
for(int k=0;k<=min(i,A[j]);k++)
{
D[i][j]+=D[i-k][j-1];
D[i][j]=D[i][j]%1000007;
}
}
cout<<D[n][m]%1000007;
}