```
for(int k=j;k>=j-a[i];k--)
{
if(k>=0)
{
dp[i][j]+=dp[i-1][k]%100000007;
dp[i][j]%=100000007;
}
else{
break;
}
}
```
这里改成
```
for(int k=0;k<=min(j,a[i]);k++)
dp[i][j]=(dp[i][j]+dp[i-1][j-k])%mod;
```
by sheeplittlecloud @ 2021-08-24 16:23:33
那个mod就是100000007
by sheeplittlecloud @ 2021-08-24 16:24:24
@[Freddymo](/user/550816)
还有这段
```
for(int i=0;i<=m;i++)
{
dp[i][0]=1;
}
```
改成
```
dp[0][0]=1;
```
by sheeplittlecloud @ 2021-08-24 16:28:07
@[Freddymo](/user/550816)
算了这是我的代码,照着改吧
```
#include<bits/stdc++.h>
using namespace std;
const int maxn=105,mod=1000007;
int n,m,a[maxn],f[maxn][maxn];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
f[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]);k++)
f[i][j]=(f[i][j]+f[i-1][j-k])%mod;
cout<<f[n][m]<<endl;
return 0;
}
```
by sheeplittlecloud @ 2021-08-24 16:29:26
@[Freddymo](/user/550816) 你的 $100000007$ 多打了2个0。。。
by sheeplittlecloud @ 2021-08-24 16:31:49
ok,谢谢巨佬
by Freddymo @ 2021-08-24 19:40:36
已经满分辽~
by Freddymo @ 2021-08-24 19:42:50