九度[1112]拦截导弹

 1 # include<iostream>
 2 # include<cstring>
 3 # include<algorithm>
 4 using namespace std;
 5 int main(){
 6     int n=0;
 7     int a[30];
 8     int b[30];
 9     int i=0,j=0,max=0;
10     while(cin>>n){
11         memset(b,0,sizeof(b));
12         for(int i=0;i<n;i++)
13             cin>>a[i];
14         b[0]=1;
15         for(i=1;i<n;i++)
16         {
17             max=0;
18             for(j=0;j<i;j++)
19             {
20                 if(a[j]>=a[i])
21                 {
22                     if(b[j]>max)
23                         max=b[j];
24                 }
25             }
26             b[i]=max+1;
27         }
28         max=0;
29         for(i=0;i<n;i++)
30             if(max<b[i])
31                 max=b[i];
32         cout<<max<<endl;
33     }
34     return 0;
35 }

关键公式d[j]=max(d[i]+1|d[i]<=d[j])

posted @ 2016-02-05 17:53  dreamer123  阅读(153)  评论(0编辑  收藏  举报