用C++编写最长严格递增子序列
时间: 2024-12-11 19:23:53 浏览: 76
在C++中,可以使用动态规划的方法来解决最长严格递增子序列(Longest Increasing Subsequence, LIS)问题。Kadane's Algorithm是一种经典的算法,它的核心思想是维护两个变量:当前连续递增序列的长度(currentLength),以及全局已知的最大递增子序列长度(maxLength)。以下是C++的一个简单实现:
#include <vector>
using namespace std;
int lengthOfLIS(vector<int>& nums) {
int maxLength = 0;
vector<int> dp(nums.size(), 1); // 初始化所有元素的dp值为1(包含自身)
for (int i = 1; i < nums.size(); ++i) { // 遍历数组
for (int j = 0; j < i; ++j) { // 从0到i-1寻找更长的前缀
if (nums[i] > nums[j]) { // 如果当前元素大于前一个
dp[i] = max(dp[i], dp[j] + 1); // 更新dp值,取最大值
}
}
maxLength = max(maxLength, dp[i]); // 每次更新maxLength
}
return maxLength;
}
在这个函数中,nums
是一个整数向量,lengthOfLIS
返回这个向量中最长的严格递增子序列的长度。
相关推荐


















