很简单的dp,但是题意难理解;
本人一开始以为是求最长的(连续的)的降序列!!!悲剧,但其实是不用连续!!!
#include<iostream>
using namespace std;
int a[100000],d[100000];
int main(){
int m=1;
while(1){
int temp;
cin>>temp;
if(temp==-1) break;
int n=1;
a[n]=temp;
while(1){
cin>>temp;
if(temp==-1) break;
a[++n]=temp;}
int max=0;
for(int i=1;i<=n;i++){
d[i]=1;
for(int j=1;j<=i-1;j++)
if(a[j]>a[i]&&d[i]<d[j]+1)
d[i]=d[j]+1;
if(d[i]>max) max=d[i];
}
cout<<"Test #"<<m++<<":"<<"/n"<<" "<<"maximum possible interceptions: "<<max<<endl;
cout<<endl;
}
return 0;}