拦截导弹 (最长上升子序列LIS)
2024-09-01 17:03:28
#include <iostream>
#include <stdio.h>
#include <algorithm> using namespace std; int list[]; // 按袭击事件顺序保存各导弹高度
int dp[]; // dp[i] 保存以第i个导弹结尾的最长不增子序列长度 int main()
{
int n;
while(cin >> n)
{
for(int i = ; i <= n; ++i)
cin >> list[i]; for(int i = ; i <= n; ++i) // 按照袭击时间顺序确定每一个dp[i]
{
int tmax = ; // 最大值的初始值为1,即以其结尾的最长不增子序列长度至少为1
for(int j = ; j < i; ++j) // 遍历其前所有导弹高度
if(list[j] >= list[i]) // 若j号导弹不比当前导弹低
tmax = max(tmax, dp[j] + ); // 将当前导弹排列在以j号导弹结尾的最长不增子序列之后,计算其长度dp[j] + 1, 若大于当前最大值,则更新最大值 dp[i] = tmax; // 将dp[i] 保存为最大值
}
int ans = ;
for(int i = ; i <= n; ++i)
{
ans = max(ans, dp[i]); // 找到以每一个元素结尾的最长不增子序列中的最大值, 该最大值即为答案
}
cout << ans << endl; } return ;
}
最新文章
- NSSortDescriptor对象进行数组排序
- Linux high memory 学习总结
- 对 JimmyZhang 老师的文章《项目代码风格要求》的一些个人观点
- .Net刷新页面的小结
- [原]AngularJS iframe打开不同域的内容时报错误
- 工欲善其事必先利其器-Notepad++使用小记(Python)
- Oracle自动增长的序列号
- php正则匹配utf-8编码的中文汉字
- 微信H5中静默登录及非静默登录的正确使用姿势
- IOS中armv7,armv7s,arm64以及i386和x86_64讲解
- php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
- vim命令详解
- Quartz代码及配置详解(转)
- hashlib和hmac
- IOS 7 更改导航栏文字到白色
- Oracle截取字符串和查找字符串
- Redis学习笔记-常用命令篇(Centos7)
- javax.persistence.RollbackException: Error while committing the transaction
- 基于python复制蓝鲸作业平台
- 匿名内部类 Inner class