動態規劃 001 攔截飛彈

2021-10-04 05:08:14 字數 1274 閱讀 8913

總時間限制: 1000ms 記憶體限制: 65536kb

描述

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

輸入

輸入有兩行,

第一行,輸入雷達捕捉到的敵國飛彈的數量k(k<=25),

第二行,輸入k個正整數,表示k枚飛彈的高度,按來襲飛彈的襲擊時間順序給出,以空格分隔。

輸出

輸出只有一行,包含乙個整數,表示最多能攔截多少枚飛彈。

樣例輸入

8

300207

155300

299170

15865

樣例輸出

6
題目分析

該題為求最長下降子串行問題,可以用人人為我的方法遞推。

嘗試1:設定maxlen[i],求前i個數中的最長下降子串行,

則每乙個maxlen[i]都與i前面所有的數有關,難以遞推;

嘗試2:設定maxlen[i],求以第i個數為結尾的最長子序列。

遞推公式:遍歷i前面每乙個maxlen[k],a[k]>a[i]時,maxlen[k]+=1;

若沒有比第i個數大的則maxlen[i]為1;

目標:*max_element(maxlen,maxlen+n)

#include

#include

using

namespace std;

const

int maxn=30;

int a[maxn]

;int maxlen[maxn]

;int

main()

for(

int i =

2;i<=n;i++)}

cout<<

*max_element

(maxlen+

1,maxlen+n+1)

;return0;

}

動態規劃 攔截飛彈

動態規劃 攔截飛彈 時間限制 1 sec 記憶體限制 256 mb 張琪曼 老師,修羅場是什麼?墨老師 修羅是佛家用語,修羅畢生以戰鬥為目標,修羅場指的是他們之間的死鬥坑,人們通常用 修羅場 來形容慘烈的戰場。後來又引申出 乙個人在困境中做絕死奮鬥 的意思。所以,這其實也在暗示我們,即使是身處絕境,...

動態規劃之攔截飛彈

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 某國為了防禦敵國的飛彈襲擊,發展中一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於等於前一發的高度。某天,雷達捕捉到敵國飛彈來襲。由於該系統還在試用階段,所以只...

1618 動態規劃 攔截飛彈

題目描述 張琪曼 老師,修羅場是什麼?墨老師 修羅是佛家用語,修羅畢生以戰鬥為目標,修羅場指的是他們之間的死鬥坑,人們通常用 修羅場 來形容慘烈的戰場。後來又引申出 乙個人在困境中做絕死奮鬥 的意思。所以,這其實也在暗示我們,即使是身處絕境,也不要放棄奮鬥。再說了,情況其實沒有這麼糟糕,因為我們最新...