求大佬优化一下代码!
#include <bits/stdc++.h>
using namespace std;
int n, a[1005];
int f[1005][1005], ans;
int main(void) {
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
for (int i = 1; i <= n; ++i)
for (int j = 0; j <= i; ++j) {
if (j > 0) f[i][j] = f[i - 1][j - 1];
f[i][j]=max(f[i-1][j],a[i]==j?f[i-1][j-1]+1:f[i-1][j-1]);
ans = f[i][j] > ans ? f[i][j] : ans;
}
printf("%d\n", ans);
return 0;
}