贪心4--拦截导弹
一、心得
二、题目和分析
某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。
求系统数。
三、代码和结果
1 #include <iostream> 2 using namespace std; 3 int main(){ 4 int n; 5 int a[100]; 6 cin>>n; 7 for(int i=1;i<=n;i++){ 8 cin>>a[i]; 9 } 10 11 //在一堆人中找符合条件的 12 13 int sys=0; 14 int high[100]={0}; 15 16 for(int i=1;i<=n;i++){ 17 //去找系统 18 int p=0; 19 //在系统中找最小 20 //找最小这个需要仔细斟酌一下 21 //在一队数中找最小的怎么做 22 for(int j=1;j<=sys;j++){ 23 if(high[j]>=a[i]){ 24 //在一队数中找最小的怎么做 25 if(p==0){ 26 p=j; 27 high[j]=a[i]; 28 } 29 else{ 30 if(high[p]<high[j]){ 31 p=j; 32 high[j]=a[i]; 33 } 34 } 35 } 36 } 37 if(p==0){ 38 sys++; 39 high[sys]=a[i]; 40 } 41 } 42 cout<<sys<<endl; 43 44 return 0; 45 }