總時間限制: 1000ms 記憶體限制: 65536kb
描述
某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲擊的時間順序,不允許先攔截後面的飛彈,再攔截前面的飛彈。
輸入
輸入有兩行,
第一行,輸入雷達捕捉到的敵國飛彈的數量k(k<=25),
第二行,輸入k個正整數,表示k枚飛彈的高度,按來襲飛彈的襲擊時間順序給出,以空格分隔。
輸出
輸出只有一行,包含乙個整數,表示最多能攔截多少枚飛彈。
樣例輸入
8
300 207 155 300 299 170 158 65
樣例輸出
6
思想
本體分解為i與後面的數比較,如果比後面的數大,那麼在這個位置上就可以得到的後面那個數後面的所有個數,然後不斷的取最大的乙個,在結束內層迴圈時加上自身的乙個,然後不斷比較得到最大值即可。
#include
#include
using
namespace std;
intmain()
maxnum[k -1]
=1;//最後乙個邊界值為1,即最後乙個位置只能有乙個
int max =1;
/* 本體分解為i與後面的數比,如果比後面的數大,那麼
在這個位置上就可以得到的後面那個數後面的所有個數,
然後不斷的取最大的乙個,在結束內層迴圈時加上自身的乙個即可
然後不斷比較得到最大值即可
*/for
(int i = k -
2; i >-1
;--i)
cout << max;
delete
ar;
delete
maxnum;
return0;
}
openjudge 數字統計
總時間限制 1000ms 記憶體限制 100000kb 描述輸入n個整數,統計每個數出現的次數.輸入 第一行是乙個整數n 1 n 1000 接下來n行每行乙個整數.輸出 第一行輸出總共有多少個不同的整數.接下來每行輸出乙個整數及這個整數出現的次數,用空格分隔.輸出的整數的順序與它們在輸入中第一次出現...
Openjudge 括號匹配
這個用了普通的迴圈,資料量不是很大的話效率還是不錯的,如果資料比較大的話,換別的方法可能效率會高一點。思路很簡單 以字串中是否還存在沒有匹配過的 作為這個字串已經處理完畢的標誌。1,讀入字串,並進行處理,把所有不是 和 的字元都轉換成空格。2,從開始掃瞄字串,如果掃瞄到 記錄 的位置,直到掃瞄到 3...
openjudge 移動路線
描述 桌子上有乙個m行n列的方格矩陣,將每個方格用座標表示,行座標從下到上依次遞增,列座標從左至右依次遞增,左下角方格的座標為 1,1 則右上角方格的座標為 m,n 小明是個調皮的孩子,一天他捉來乙隻螞蟻,不小心把螞蟻的右腳弄傷了,於是螞蟻只能向上或向右移動。小明把這只螞蟻放在左下角的方格中,螞蟻從...