[HDU]1257最少拦截系统

http://acm.hdu.edu.cn/showproblem.php?pid=1257

第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.

我的思路是保存依次保存现在每个拦截系统能拦截的最高的高度,接下来输入的每一个高度,依次和这若干拦截系统的现在所能拦截的最高高度比较吗,若某次小于这个高度,就替代这个高度,若比这些拦截系统的高度都高,就重新创造一个拦截系统。

#include"stdio.h"
#include"stdlib.h"
int a[100000],b[100000];   //a[]保存导弹高度,b[]保存每套系统的最高拦截高度 
int main()
{
     int t,n,i,j,count;        //count为系统数目 
     while(scanf("%d",&n)!=EOF)
     {
            count=0;
            b[0]=0;
            for(i=0;i<n;i++)
            {
                scanf("%d",&a[i]);
                for(j=0;j<=count;j++)
                {
                   if(a[i]<b[j])
                   {
                      b[j]=a[i];
                      break;
                   }
                   else if(j==count)
                   {
                      count++;
                      b[count]=a[i];
                     // printf("%d ",a[i]);
                      break;
                   }
                }
            }
            printf("%d
",count);
     }
}
原文地址:https://www.cnblogs.com/sjy123/p/3238305.html