拦截导弹 (最长上升子序列LIS)
1 #include <iostream> 2 #include <stdio.h> 3 #include <algorithm> 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,即以其结尾的最长不增子序列长度至少为1 22 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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南