description
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。
輸入飛彈依次飛來的高度(雷達給出的高度資料是不大於30000的正整數),計算這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。
input
output
sample input
300 250 275 252 200 138 245
sample output
5(最多能攔截的飛彈數)2(要攔截所有飛彈最少要配備的系統數)
解題思路:先讀入資料,然後用迴圈統計一套飛彈攔截系統最多能攔截的飛彈數量,儲存在陣列中,並進行比對,把最
大值進行輸出,後面根據前面所統計出來的資料,用迴圈對需要的系統數量進行累加,最後輸出這個累加值即可。
程式:
var
a,b,c,k:array[1..1000] of longint;
n,i,j,max,min,high:longint;
begin
while not eoln do
begin
inc(n);
read(a[n]);
b[n]:=1;
c[n]:=0;
end;
for i:=n-1 downto 1 do
begin
max:=0;
for j:=i+1 to n do
if (a[j]<=a[i]) and (b[j]>max) then max:=b[j];
b[i]:=max+1;
end;
max:=0;
for i:=1 to n do
if b[i]>max then max:=b[i];
writeln(max);
min:=0;
for i:=1 to n do
begin
if k[i]<>1 then
begin
k[i]:=1;
high:=a[i];
for j:=i+1 to n do
if (high>=a[j]) and (k[j]<>1) then
begin
high:=a[j];
k[j]:=1;
end;
inc(min);
end;
end;
writeln(min);
end.
攔截飛彈問題(貪心演算法)
時間限制 1000 ms 記憶體限制 65536 kb 某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統,但是這種攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,由於該系統還在試用階段。所以一套系統有可能不能攔截所...
攔截飛彈 貪心
問題描述 某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統,但是這種攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,由於該系統還在試用階段。所以一套系統有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷達給出的高...
演算法 攔截飛彈問題
攔截飛彈問題 20分 某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須...