博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拦截导弹 (最长上升子序列LIS)
阅读量:7111 次
发布时间:2019-06-28

本文共 1101 字,大约阅读时间需要 3 分钟。

 

 

1 #include 
2 #include
3 #include
4 5 using namespace std; 6 7 int list[26]; // 按袭击事件顺序保存各导弹高度 8 int dp[26]; // dp[i] 保存以第i个导弹结尾的最长不增子序列长度 9 10 11 int main() 12 {13 int n;14 while(cin >> n)15 {16 for(int i = 1; i <= n; ++i) 17 cin >> list[i];18 19 for(int i = 1; i <= n; ++i) // 按照袭击时间顺序确定每一个dp[i]20 {21 int tmax = 1; // 最大值的初始值为1,即以其结尾的最长不增子序列长度至少为122 for(int j = 1; j < i; ++j) // 遍历其前所有导弹高度23 if(list[j] >= list[i]) // 若j号导弹不比当前导弹低24 tmax = max(tmax, dp[j] + 1); // 将当前导弹排列在以j号导弹结尾的最长不增子序列之后,计算其长度dp[j] + 1, 若大于当前最大值,则更新最大值25 26 dp[i] = tmax; // 将dp[i] 保存为最大值27 }28 int ans = 1;29 for(int i = 1; i <= n; ++i)30 {31 ans = max(ans, dp[i]); // 找到以每一个元素结尾的最长不增子序列中的最大值, 该最大值即为答案32 } 33 cout << ans << endl;34 35 }36 37 return 0;38 }

 

转载于:https://www.cnblogs.com/FengZeng666/p/11102148.html

你可能感兴趣的文章
Struts1.3 action配置
查看>>
Cisco IOS 配置PPPOE
查看>>
DRP(导向应答协议
查看>>
华为数通产品MIB库OID信息自助指引
查看>>
SCOM 2012系列③导入管理包
查看>>
C++里的继承和多态(中)——分析单继承、多继承、菱形继承(不含虚函数)...
查看>>
PHP: 深入了解一致性哈希
查看>>
set yum resource to your cdrom
查看>>
教你设置更安全的密码
查看>>
用递归读取数据库(*.MDB)生成树节点(TreeNode)
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
nginx 非80、443端口跳转到80、443
查看>>
ubuntu 12.04 安装kvm,解决Virtual Machine Manager启动报错
查看>>
Oracle IO问题解析(八)
查看>>
Replacing the ESXi Host Default Certificate with a CA-Signed Certificate
查看>>
音频视频压缩ffmpeg
查看>>
基于HTML5实现的Heatmap热图3D应用
查看>>
我的友情链接
查看>>
BeetlSql 单表查询工具(Query)使用说明
查看>>