您的位置:首页 > 其它

练习题目-炮弹防御

2016-10-12 22:23 232 查看


题目描述

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截 系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试 用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。


输入

最多20个整数,分别表示导弹依次飞来的高度(雷达给出高度数据是不大于30000的正整数)


输出

整数M。表示:这套系统最多能拦截 M 枚导弹.


样例输入

300 250 275 252 200 138 245


样例输出

5
#include <iostream>
#include <stdio.h>
using namespace std;
int f(int n,int a[]);
int values1[20]={0};
int main()
{
int a[20]={300,200,275,100};
int i=4;
//	while((scanf("%d",&a[i++]))!=EOF){}
i--;
int max=1;
for(;i>=0;i--)
{
int temp=f(i,a);
if(temp>=max)
max=temp;
}
printf("%d",max);
return 0;
}
int f(int n,int a[])
{
int max=1,i;
if(n==0)
{
return 1;
}
else
{
for(i=0;i<n;i++)
{
if(a[i]>=a
)
{
int x;
if(values1[i]!=0)
x=values1[i];
else
{
x=f(i,a);
values1[i]=x;
}
x++;
if(max<=x)
{
max=x;
}
}
}
}
return max;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM