原题链接:数列 - 洛谷
还是dp,还是好难呜呜~看看大佬题解叭:
题解 P1799 【数列】 - muyang_233 的博客 - 洛谷博客
AC代码:
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define ll long long
#define PII pair<int,int>
#define rep(i, n) for (int i = 1; i <= (n); ++i)
#define rrep(i, n) for(int i = n; i >= 1; ++i)
using namespace std;
const double pi = acos(-1.0);
const int N = 1e3 + 10;
int a[N];
int f[N][N];
int main()
{
int n;
scanf("%d", &n);
rep(i, n) scanf("%d", &a[i]);
rep(i, n)
for(int j = 0; j < i; j++)
f[i][j] = max(f[i - 1][j - 1], f[i - 1][j] + (a[i] == i - j));
int ans = 0;
for(int j = 0; j < n; j++) ans = max(ans, f[n][j]);
printf("%d", ans);
return 0;
}