[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\n",count); } }