@[彭科壹](/user/484717) mod 是 $1000007$ 吧
而且 j 和 k 应该从零开始
by Carnival @ 2021-10-06 09:45:49
有错轻喷
by Carnival @ 2021-10-06 09:47:44
@[彭科壹](/user/484717)
j 和 k 应该从1开始
你少初始化了一些东西
by _l_l_l_l_l_ @ 2021-10-06 10:00:31
@[Gamemode](/user/316300) 0 开始,那 `f[i-1][j-k]`就RE了(
by _l_l_l_l_l_ @ 2021-10-06 10:03:00
@[WenZKbb](/user/522828) az
我看题解都是从 $0$ 开始的
话说为啥`f[i-1][j-k]`会 RE 啊(
by Carnival @ 2021-10-06 10:14:20
@[Gamemode](/user/316300)
不会RE
我试了一下
- j从1开始 https://www.luogu.com.cn/record/59263134
- 从0
https://www.luogu.com.cn/record/59263100
我的ac代码
```
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int MOD=1e6+7;
//每种不超过a[i],一共不超过m
//可以一盆也不放
int n,m,a[101],f[101][101];//f[i][j] 前i种花,一共摆了j盆,方法数
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
//memset(f,-0x3f,sizeof(f));
for(int i=0;i<=n;i++)f[i][0]=1;//奇怪的初始化又增加了,一定要记得所有初始有的条件都要初始化
for(int i=1;i<=n;i++)//枚举花的种类
{
for(int j=1;j<=m;j++)//枚举一共摆了几个
{
for(int k=0;k<=a[i];k++)//枚举这种(第i种)摆几盆
{
if(k>j)break;
f[i][j]+=f[i-1][j-k];
f[i][j]%=MOD;
}
}
}
printf("%d\n",f[n][m]);
return 0;
}
```
by _l_l_l_l_l_ @ 2021-10-06 10:23:18