计算选择性删除元素后序列的最长连续上升子序列长度的代码实现
本题的思路是先分别计算以每个元素结尾的最长连续上升子序列的长度和以每个元素开头的最长连续上升子序列的长度,然后根据这些信息找出删除最多一个元素后的最长连续上升子序列的长度。 以下是完整的代码实现及详细 ```cpp #include<bits/stdc++.h> using namespace std; // a 数组用于存储输入的序列,f 数组用于存储以每个元素结尾的最长连续上升子序列的长度 // g 数组用于存储以每个元素开头的最长连续上升子序列的长度 int a[200005], f[200005], g[200005]; int n, ans; int main () { cin >> n; // 读取输入的序列 for (int i = 1; i <= n; i++) cin >> a[i]; // f[i]:以 a[i] 结尾的最长连续上升子序列 f[1] = 1; // 计算以每个元素结尾的最长连续上升子序列的长度 for (int i = 2; i <= n; i++) { // 如果当前元素大于前一个元素,则最长连续上升子序列长度加 1 if (a[i] > a[i - 1]) { f[i] = f[i - 1] + 1; } else { // 否则,最长连续上升子序列长度为 1 f[i] = 1; } } // g[i]:以 a[i] 开头的最长连续上升子序列 g[n] = 1; // 计算以每个元素开头的最长连续上升子序列的长度 for (int i = n - 1; i >= 1; i--) { // 如果当前元素小于后一个元素,则最长连续上升子序列长度加 1 if (a[i] < a[i + 1]) { g[i] = g[i + 1] + 1; } else { // 否则,最长连续上升子序列长度为 1 g[i] = 1; } } // 不删除元素的情况,找出 f 数组中的最大值 for (int i = 1; i <= n; i++) { ans = max(ans, f[i]); } // 删除一个元素的情况 for (int i = 2; i < n; i++) { // 如果 a[i - 1] < a[i + 1],则可以将 a[i] 删除,更新最长连续上升子序列的长度 if (a[i - 1] < a[i + 1]) { ans = max(ans, f[i - 1] + g[i + 1]); } } cout << ans; return 0; } ``` ######[AI问答 | 696点数解答 | 2026-08-15 20:42:49]
- 求解特定条件下整数序列的最小值:算法分析与代码实现(字节豆包 | 746点数解答 | 2026-01-24 13:14:40)158
- jQuery 实现动态操作 DOM:打造可增删任务的待办事项列表应用(百度文心 | 1015点数解答 | 2024-10-26 23:41:22)519
- jQuery 打造实用待办事项列表:输入添加、点击删除一步到位!(阿里通义 | 1139点数解答 | 2024-10-29 08:44:48)441
- jQuery 实现动态操作 DOM:打造带添加与删除功能的待办事项列表应用(阿里通义 | 687点数解答 | 2024-10-29 09:25:06)449
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)561
- 深入解析洛谷打卡系统:规则揭秘与代码实现(字节豆包 | 316点数解答 | 2025-11-16 19:45:59)198
- C++实现最短编辑距离计算:将一个单词转换为另一个的最少操作数揭秘(字节豆包 | 311点数解答 | 2025-11-12 14:55:49)107
- Linux 系统用户、组及文件操作全流程实践(字节豆包 | 1142点数解答 | 2026-03-20 17:29:38)98
- Java顺序表源码深度解析:从内存布局到扩容机制与Windows实战指南(阿里通义 | 2528点数解答 | 2026-04-01 10:06:46)92
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)477
- iOS开发揭秘:序列(Sequence)索引是否从0开始?实例为你解答!(百度文心 | 187点数解答 | 2023-11-09 17:44:38)305
- MATLAB实现r5(n)序列离散傅立叶变换及补零至20长序列DFT计算 (GPT | 339点数解答 | 2024-10-28 16:31:47)353