题解 | #拦截导弹#

拦截导弹

https://www.nowcoder.com/practice/dad3aa23d74b4aaea0749042bba2358a

#include <iostream>
using namespace std;

/*
最长递减序列
*/
int missile[30];
int dp[30]; //dp[i]表示以i位置结尾的最长递减序列的长度

int main() {
    int k;
    scanf("%d", &k);
    for(int i = 0; i < k; i++){
        scanf("%d", &missile[i]);
    }
    fill(dp, dp + 30, 1); //给dp赋初值1
  
    for(int i = 1; i < k; i++){ //遍历missile数组,找到比当前missile[i]要大的高度
        for(int j = 0; j < i; j++){
            if(missile[i] <= missile[j]){ //注意这里高度相同也能打到
                dp[i] = max(dp[j] + 1, dp[i]);
            }
        }
    }
  
    int max = 0;
    for(int i = 0; i < k; i++){ //遍历dp数组,找到最大值
        max = max > dp[i] ? max : dp[i];
    }
    printf("%d\n", max);
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

激昂墓志铭_终章:亚新经典实习3300,转正7k外包。去那干啥,还要加班
投递亚信科技(中国)有限公司等公司6个岗位
点赞 评论 收藏
分享
牛客97567122...:我最近投的几个,都是要不已读不回,要不不回,还有直接拒绝的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务