描述
某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲擊的時間順序,不允許先攔截後面的飛彈,再攔截前面的飛彈。
輸入
輸入有兩行,
第一行,輸入雷達捕捉到的敵國飛彈的數量k(k<=25),
第二行,輸入k個正整數,表示k枚飛彈的高度,按來襲飛彈的襲擊時間順序給出,以空格分隔。
輸出
輸出只有一行,包含乙個整數,表示最多能攔截多少枚飛彈。
樣例輸入
8樣例輸出300 207 155 300 299 170 158 65
6**如下:
#include int main(),ans = 0;
scanf("%d",&k);
for(int i=0;i=0;j--)
}a[i] = max + 1;
if(ans < a[i])
}printf("%d\n",ans);
return 0;
}
解析
經典dp,最長降序子串行問題。
arr陣列儲存的是飛彈的高度。a陣列儲存的是對應arr的飛彈高度為最長降序子串行最後出現的飛彈(如a[0]就是arr[0]為降序序列最後出現的飛彈)時攔截飛彈的最大個數。
(eg:本題的arr分別為.那麼a對應的分別為)
尋找a陣列中的最大值即為本題的答案啦。
百練2945 攔截飛彈(簡單dp)
2945 攔截飛彈 檢視 提交 統計 提示 提問 總時間限制 1000ms 記憶體限制 65536kb 描述 某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈...
攔截飛彈(DP)
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈 攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的 飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷達...
DP 攔截飛彈
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷達給出...