演算法設計與分析 攔截飛彈

2021-10-06 01:24:19 字數 989 閱讀 3687

問題描述

某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。

輸入飛彈依次飛來的高度(雷達給出的高度資料是不大於30000的正整數),計算這套系統最多能攔截多少飛彈,如果要

攔截所有飛彈最少要配備多少套這種飛彈攔截系統。

輸入格式

一行,為飛彈依次飛來的高度

輸出格式

兩行,分別是最多能攔截的飛彈數與要攔截所有飛彈最少要配備的系統數

樣例輸入

389 207 155 300 299 170 158 65

樣例輸出62

這個問題分析後第一反應是第一問用動態規劃做(求最長遞減序列),第二問用貪心演算法做。但是還是覺得有點困難,所以就去網上找找看看有沒有更好的解決方法。然後找到乙個令我耳目一新的思路,就是第二問的求解為序列的最長單調遞增序列長度。

這個思路詳情參考

注意:這裡輸入完樣例以後,還要按ctrl+z 結束輸入 再按回車執行才能出結果。

#include

using namespace std;

#define len 20

int main()

,up[len+1]=,down[len+1]=;

while(cin>>mis[i]&&mis[i]!=eof)

up[i]=max1+1;

down[i]=max2+1;

sum=max(sum,up[i]);

num=max(num,down[i]);

i++;

}cout

}

演算法訓練 攔截飛彈

演算法訓練 攔截飛彈 時間限制 1.0s 記憶體限制 256.0mb 問題描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,...

演算法訓練 攔截飛彈

題目鏈結 錦囊2 求一套系統攔截的飛彈最大值為最長不下降子串行問題,用動態規劃。求最少多少套系統需要使用貪心法,每枚後面的炮彈使用能攔截它的最低的系統。問題描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮...

演算法 攔截飛彈問題

攔截飛彈問題 20分 某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須...