某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲擊的時間順序,不允許先攔截後面的飛彈,再攔截前面的飛彈。
每組輸入有兩行,第一行,輸入雷達捕捉到的敵國飛彈的數量k(k<=25),
第二行,輸入k個正整數,表示k枚飛彈的高度,按來襲飛彈的襲擊時間順序給出,以空格分隔。
每組輸出只有一行,包含乙個整數,表示最多能攔截多少枚飛彈。示例1
複製
8複製300 207 155 300 299 170 158 65
6注意題目中說:不能高於,並不是 必須低於,是<=
思路:對於a[i],遍歷a[j]:a[0]到a[i-1],如果a[i]<=a[j],滿足攔截條件,再判斷dp[i]和dp[j]+1的大小,如果dp[j]+1即更新
dp[i]表示以a[i]為末尾的最長遞增子串行的長度
#include#include#includeusing namespace std;
const int maxn=26;
int a[maxn]; //原始序列
int dp[maxn]; //dp[i]表示以a[i]為末尾的最長非遞增子串行的長度
int main() }}
maxmum=max(dp[i],maxmum);
} printf("%d\n",maxmum);
return 0;
}
北京大學上機復試題
某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲擊的時間順...
北京大學機試題 整數奇偶排序 C
題目描述 time limit 1000 ms memory limit 256 mb 輸入10個整數,彼此以空格分隔。重新排序以後輸出 也按空格分隔 要求 1.先輸出其中的奇數,並按從大到小排列 2.然後輸出其中的偶數,並按從小到大排列。輸入輸出格式 輸入描述 任意排序的10個整數 0 100 彼...
矩陣冪 北京郵電大學複試機試題
給定乙個n n的矩陣,求該矩陣的k次冪,即p k。第一行 兩個整數n 2 n 10 k 1 k 5 兩個數字之間用乙個空格隔開,含義如上所示。接下來有n行,每行n個正整數,其中,第i行第j個整數表示矩陣中第i行第j列的矩陣元素pij且 0 pij 10 另外,資料保證最後結果不會超過10 8。對於每...