程序+导弹拦截问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 12:55:22

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

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

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

程序清单(in Pascal):

var
h:array [1..2,1..20] of integer;
hn:integer;

procedure init;
var i:integer;
begin
fillchar(h,sizeof(h),0);
hn:=0;
repeat
inc(hn);
read(h[1,hn])
until eof;
end;

procedure doit;
var i,j,n:integer;
begin
for i:=1 to 20 do h[2,i]:=1;
n:=1;
for i:=hn-1 downto 1 do
begin
for j:=i+1 to hn do
if (h[1,i]>=h[1,j]) and (h[2,i]<h[2,j]+1)
then h[2,i]:=h[2,j]+1;
if n<h[2,i] then n:=h[2,i];
end;
writeln(n);
end;

begin