OpenJ_Bailian - 2945 攔截導彈(最長遞減子序列)
Description
某國為了防禦敵國的導彈襲擊,開發出一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的導彈來襲,並觀測到導彈依次飛來的高度,請計算這套系統最多能攔截多少導彈。攔截來襲導彈時,必須按來襲導彈襲擊的時間順序,不允許先攔截後面的導彈,再攔截前面的導彈。
Input
輸入有兩行,
第一行,輸入雷達捕捉到的敵國導彈的數量k(k<=25),
第二行,輸入k個正整數,表示k枚導彈的高度,按來襲導彈的襲擊時間順序給出,以空格分隔。
Output
輸出只有一行,包含一個整數,表示最多能攔截多少枚導彈。
Sample Input
8
300 207 155 300 299 170 158 65
Sample Output
6
Solution
最長遞減子序列(準確說應該是不增)。LIS模板修改即可。
- 注意dp初始化為1。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 26;
int dp[maxn], arr[maxn];
void init()
{
memset(dp, 0, sizeof(dp));
}
int main()
{
// freopen("in.txt", "r", stdin);
int N;
while (~scanf("%d", &N))
{
init();
dp[1] = 1;
for (int i = 1; i <= N; i++)
{
scanf("%d", &arr[i]);
//初始化要初始為1!!!!!!
dp[i] = 1;
}
for (int i = 1; i <= N; ++i)
{
// 每次外部迴圈,確定以當前位置為末尾元素的最長子序列;
for (int j = 1; j < i; ++j)
// 通過遍歷 j 實現對 dp[i] 的更新
if (arr[j] >= arr[i])
dp[i] = max(dp[i], 1 + dp[j]);
}
int ans = 0;
for (int i = 1; i <= N; i++)
ans = max(ans, dp[i]);
printf("%d\n", ans);
}
return 0;
}
相關文章
- 導彈攔截
- 【LeetCode動態規劃#14】子序列系列題(最長遞增子序列、最長連續遞增序列、最長重複子陣列、最長公共子序列)LeetCode動態規劃陣列
- codeforces 340D Bubble Sort Graph(最長非遞減子序列)
- 最長遞增子序列
- 最長公共子序列,遞迴簡單程式碼遞迴
- 最長公共子序列
- 最長上升子序列
- Day 45 | 300.最長遞增子序列 、674. 最長連續遞增序列 、718. 最長重複子陣列陣列
- 最長公共子序列(JAVA)Java
- [題解] [NOIP 1999] 導彈攔截
- 最長遞增子序列-Java 實現Java
- 洛谷 P1020 導彈攔截
- java 實現 最長公共子序列Java
- 最長公共子序列求方案數
- 線性dp:最長上升子序列
- 線性dp:最長公共子序列
- 程式碼隨想錄演算法訓練營 | 300.最長遞增子序列,674. 最長連續遞增序列,718. 最長重複子陣列演算法陣列
- 673. 最長遞增子序列的個數
- 動態規劃:最長上升子序列動態規劃
- 最長上升子序列動態規劃動態規劃
- 動態規劃-最長公共子序列動態規劃
- 動態規劃——最長公共子序列動態規劃
- 最長等差數列;及子序列分析
- 演算法題:最長公共子序列演算法
- 程式碼隨想錄演算法訓練營第49天 | 300.最長遞增子序列 、674. 最長連續遞增序列 、718. 最長重複子陣列演算法陣列
- Leetcode-300. 最長遞增子序列LeetCode
- LeetCode300.最長遞增子序列LeetCode
- 動態規劃-最長上升子序列模型動態規劃模型
- 動態規劃(最長公共子序列LCS)動態規劃
- LCS 演算法:Javascript 最長公共子序列演算法JavaScript
- 最長公共子序列的程式碼實現
- NlogN 求最長不下降子序列(LIS)
- 力扣1143. 最長公共子序列 動態規劃之最長公共子序列力扣動態規劃
- [LintCode] Longest Increasing Subsequence 最長遞增子序列
- 【部分轉載】:【lower_bound、upperbound講解、二分查詢、最長上升子序列(LIS)、最長下降子序列模版】
- 動態規劃7:最長上升子序列LIS動態規劃
- 線性dp--最長上升子序列變形
- 5211 導彈攔截 普及組 NOIP2010 暴力列舉