某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能達到前一發的高度。
某天,雷達捕捉到敵國的飛彈來襲,如果系統數量太少,將導致有可能不能攔截所有的飛彈。所以,根據雷達捕捉到的飛彈高度,需要預先準備相應數量的攔截系統。
比如飛彈的高度依次為:
5 3 4 2 4 1
則乙個攔截系統的第一發炮彈必須打到高度5的地方,第二發炮彈打到高度3的地方。
但第三發炮彈打不到高度4的地方(因為每一發炮彈不能達到前一發的高度),所以要使用第二套攔截系統。
第二套攔截系統發射的炮彈高度打到4和2的高度(實際上,要攔截高度為2的炮彈,使用第一套攔截系統或者第二套都可以),
第三套攔截系統發射的炮彈高度打到4和1的高度(實際上,要攔截高度為1的炮彈,三套攔截系統都可以)。
因此,總共需要三套攔截系統。
再比如飛彈的高度依次為:
5 3 4 2 3 1
則乙個攔截系統的第一發炮彈必須打到高度5的地方,第二發炮彈打到高度3的地方。
但第三發炮彈打不到高度4的地方(因為每一發炮彈不能達到前一發的高度),所以要使用第二套攔截系統。
第二套攔截系統發射的炮彈高度打到4的高度。
再要攔截高度為2的炮彈,使用第一套攔截系統或者第二套都可以,但考慮到後面還需要攔截炮彈,我們這裡使用第一套攔截系統(為什麼不能用第二套,自己想啦)。
再要攔截高度為3的炮彈,我們使用第二套攔截系統。
再攔截高度為1的炮彈,第一套和第二套系統都可以,我們就使用第二套吧。
因此,總共僅需要兩套攔截系統,第一套攔截的是5 3 2,第二套攔截的是4 3 1。
請根據給定的高度資料,幫助計算一下最少需要多少套攔截系統。
輸入說明 :
輸入資料首先包括乙個整數t (1<=t<= 100),,表示測試資料的組數。
每組測試資料的第一行是乙個整數n(1<= n <= 1000),代表著飛彈總個數(正整數), 接下來用n個數字代表著飛彈依次飛來的高度,其中雷達給出的高度資料是不大於10000的正整數,用空格分隔。
輸出說明 :
對應每組資料輸出攔截所有飛彈最少要配備多少套這種飛彈攔截系統。
每組輸出佔一行,行首與行尾無空格。
輸入範例 :28
389 207 155 300 299 170 158 65
5100 50 200 300 400
輸出範例 :24
思路:先把第乙個攔截系統的高度初始化為第乙個飛彈的高度,然後將後來的飛彈的高度與攔截系統的高度比較,從第乙個攔截系統開始比較,有如下情況:
若第i個飛彈的高度小於第j個攔截系統,則把第j個攔截系統的高度設定為第i個飛彈的高度;
若第i個飛彈的高度大於所有攔截系統的高度,則新增加乙個攔截系統,新攔截系統的高度為第i個飛彈的高度
ac**:
#include
intmain()
}if(j>num)
}printf
("%d\n"
,num+1)
;}return0;
}
47 最少攔截系統
3 實現 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能達到前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,如果系統數量太少,將導致有可能不能攔截所有的飛彈。所以,根據雷達捕捉到的飛彈高度,需要預先準備...
最少攔截系統
description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.怎麼辦呢...
最少攔截系統
題目 description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.怎...