这是我原来的代码(0 pts):
#include <bits/stdc++.h>
using namespace std;
const int N=110,MOD=1e6+7;
int n,m,a[N],f[N][N],ans;
int dfs(int dep,int lst)
{
if(dep>m)
{
ans=(ans+1)%MOD;
return 1;
}
if(f[dep][lst]!=-1)return f[dep][lst];
f[dep][lst]=0;
for(int i=lst+1;i<=n;i++)
for(int j=0;j<=min(a[i],m-dep+1);j++)
{
f[dep][lst]=(f[dep][lst]+dfs(dep+j,i))%MOD;
}
return f[dep][lst];
}
void fast_read()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
int main()
{
fast_read();
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
memset(f,-1,sizeof(f));
cout<<dfs(1,0)<<endl;
return 0;
}
我后来的代码把 dfs 里面的 int j=0 改成 int j=1,就变成了 100 pts,不懂为什么,求大佬指教!