题目链接:点击打开链接
一道水题dp
#include<bits/stdc++.h>
using namespace std;
int dp[100010];
int num[100010];
int main(){
//freopen("in.txt","r",stdin);
int n;
while(cin>>n){
if(!n) break;
memset(dp,0,sizeof(dp));
memset(num,-1,sizeof(num));
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
if(num[x]!=-1){
if(x==999)
dp[i]=max(dp[i-1],dp[num[x]]+3);
else
dp[i]=max(dp[i-1],dp[num[x]]+1);
}
else dp[i]=dp[i-1];
num[x]=i;
}
cout<<dp[n]<<endl;
}
}