最长上升子序列 Longest Increase Subsequence
#include <iostream>
using namespace std;
void LongestIncreaseSequence(int *a,int n){
int dp[n];
int ans = 1;
for(int i = 0;i < n;i ++){ // 此循环掌握每一个阶段(i)dp的值
dp[i] = 1;
for(int j = 0;j < i;j ++){ // 询问前i-1个阶段的最佳决策
int temp = dp[j] + 1;
if(a[j] < a[i] && temp > dp[i])
dp[i] = temp;
}
if(dp[i] > ans) ans = dp[i];
}
cout << ans << endl;
}
int main()
{
int a[] = {2,7,1,5,6,4,3,8,9};
LongestIncreaseSequence(a,9);
}
本文详细介绍了一种求解最长上升子序列(Longest Increase Subsequence, LIS)问题的算法实现。通过动态规划的方法,该算法能够有效地找出一个序列中长度最长的连续递增子序列,适用于各种需要解决此类问题的场景。
2087

被折叠的 条评论
为什么被折叠?



