微信扫一扫打赏支持

贪心4--拦截导弹

贪心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 } 

 

posted @ 2017-07-08 03:53  范仁义  阅读(513)  评论(0编辑  收藏  举报