| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 841 人关注过本帖
标题:请问‘防御导弹’问题。。。。
只看楼主 加入收藏
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏
 问题点数:0 回复次数:5 
请问‘防御导弹’问题。。。。
问题叙述:
    某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在使用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入:
最多20个整数,分别表示导弹依次飞来的高度(雷达给出高度数据是不大于30000的正整数)
输出:两个整数M和N。表示:这套系统最多能拦截 M 枚导弹,如果要拦截所有导弹最少要配备 N 套这种导弹系统。

举例:
输入 300 250 275 252 200 138 245

输出 5 2
欢迎高手们帮忙解答!不胜感激!

下面是我用c写的‘防御导弹’问题,但是总是wrong answer?
不明白啊。。。
#include<stdio.h>
#include<string.h>
#define Max 30001
int a[Max],b[Max];
int main()
  { int h,i,max,max2;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    while(scanf("%d",&h)!=EOF)
     { max=max2=0;
       for(i=h;i<=Max-1;i++)
        if(a[i]>max)
         max=a[i];
       a[h]=max+1;
       for(i=h-1;i>=0;i--)
        if(b[i]>max2)
         max2=b[i];
       b[h]=max2+1;
     }
    max=max2=0;
    for(i=0;i<=Max-1;i++)
    { if(a[i]>max) max=a[i];
      if(b[i]>max2) max2=b[i];
     }
    printf("%d %d\n",max,max2);
                                       
   }

搞了半天了 ,还是弄不出结果来 希望高手能帮我改正下这题目的错误。。给我下正确的程序做参考
搜索更多相关主题的帖子: 导弹 防御 
2005-09-29 19:17
woshiyfk
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2005-3-2
收藏
得分:0 
main()
{int a[20],i,x=1,y=1,j,n;
 scanf("%d",&n);  输入导弹得个数
 for(i=0;i<n;i++)
 scanf("%d",&a[i]);
 for(i=1,j=a[0];i<n;i++)
    if(a[i]>j)
      y++;
    else
      x++;
    j=a[i];  
    }
printf("%d   %d",x,y);
}  

别想得太多了

2005-09-29 21:39
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏
得分:0 
这样写好象不能达到题目的要求吧?  导弹每次都要递减的!

我很笨的!! 但我很勤奋!!
2005-09-29 23:20
liyanguestc
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2005-5-15
收藏
得分:0 
要用树啊!!!

2005-09-30 12:34
liyanguestc
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2005-5-15
收藏
得分:0 

#include "Stdio.h" #include "Conio.h"

#define T 30001 #define B 0 int main(void) { int array[20],len; int value,i,j; printf("input the total number(<20)"); scanf("%d",&len); for(i=0;i<len;i++) array[i]=0; array[0]=T; for(j=1;j<=len;j++) {printf("enter the %dth num",j); scanf("%d",&value); for(i=0;i<len;i++) {if(array[i]!=0&&array[i]!=value) if(array[i]>value&&array[i+1]<value) array[i+1]=value; } } for(i=1;i<len;i++) if(array[i]!=0&&array[i+1]==0)printf("%d",i);

getch(); return 0; } 只写了第一步!看看!第二部很简单了!


2005-09-30 13:52
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏
得分:0 
第二步直接在程序中添加进去应该可以的吧?

我很笨的!! 但我很勤奋!!
2005-09-30 14:58
快速回复:请问‘防御导弹’问题。。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027619 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved