hdu 1257 最少拦截系统

#include<stdio.h>
#include<string.h>
int main()
{
    int num[30010],con[30010];
     int n,i,j,t;
     while(scanf("%d",&n),n!=-1)
     {
            memset(num,0,sizeof(num));
            memset(con,0,sizeof(con));
            for(i=0;i<n;i++)
            scanf("%d",&num[i]);
            con[0]=30000;
            for(t=0,i=0;i<n;i++)
            {
            for(j=0;j<=t;j++)
            if(num[i]<=con[j]) {con[j]=num[i];break;}////如果后面的高度比前面的小,则把后面的代替前面的。
            if(j>t) con[++t]=num[i];//当后面的高度比前面各系统的最小高度都大时,则系统增加1,此时此系统的最小高度为当前值。
            }
            printf("%d\n",t+1);
        }
        return 0;
    } 

你可能感兴趣的:(dp)