用最长上升子序列做的。。。。。
请dalao帮忙看看
#include <bits/stdc++.h>
using namespace std;
int s,maxx;
int num[1010];
int solution[1010];
int main()
{
memset(num,0,sizeof(num));
memset(solution,0,sizeof(solution));
cin>>s;
for(int i=0; i<s; i++) cin>>num[i];
solution[0]=1;
for(int j=0; j<s; j++)
{
maxx=1;
for(int i=0; i<j; i++)
{
if(solution[i]+1>maxx&&num[j]>num[i]&&num[j]-num[i]<=j-i) maxx=solution[i]+1;
}
solution[j]=maxx;
if(solution[j]==1&&num[j]-j<0) solution[j]=0;
}
maxx=0;
for(int j=0; j<s; j++)
if(maxx<solution[j]) maxx=solution[j];
cout<<maxx;
}