再改就跟题解一样了
这个c数组大小很玄学啊 全部题解的c都开到 2000∗2000 左右啊 但 ∣ai∣≤1e9 真的不会炸掉吗
#include <iostream>
using namespace std;
const int mod = 998244353;
long long n, c[2010][2010], dp[2010], arr[2010], res;
int main() {
cin >> n;
c[1][1] = 1;
for(int i = 1; i <= 2000; i++) {
c[i][1] = c[i][i] = 1;
for(int j = 2; j < i; j++)
c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod;
}
for(int i = 1; i <= n; i++) cin >> arr[i];
dp[n + 1] = 1;
for(int i = n; i >= 1; i--)
if(arr[i] > 0)
for(long long j = i + arr[i] + 1; j <= n + 1; j++)
dp[i] = (dp[i] + (dp[j] * 1ll * c[j - i - 1][arr[i]]) % mod) % mod;
for(int i = 1; i <= n; i++) res = (res + dp[i]) % mod;
cout << res << endl;
system("pause");
return 0;
}