leetcode300——Longest Increasing Subsequence

题目大意:求出所给数字序列中的最长上升子序列长度。

分析:动规。

          状态:dp[i]——以下标为i的数字结尾得到的最长上升子序列长度

          初始化:dp[i]=1

          结果:max{dp[i]}

          状态转移方程:dp[i]=max{dp[i],dp[j]+1}  (j<i,nums[j]<nums[i])

代码:

class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
if (nums.size() == 0) return 0;
vector<int> dp(nums.size(),1);
int ans = dp[0];
for (int i = 1;i < nums.size();i++) {
for (int j = 0;j < i;j++) {
if (nums[j] < nums[i])
dp[i] = max(dp[i], dp[j] + 1);
}
ans = max(ans, dp[i]);
}
return ans;
}
};

猜你喜欢

转载自blog.csdn.net/tzyshiwolaogongya/article/details/80765318