leetcode 673. 最长递增子序列的个数 medium
题目描述:
解题思路:
只想到了O(n^2)的 dp, 贪心的没想到,不过u1s1, 应该也不会考到
代码:
dp版
//
class Solution {
public:
int findNumberOfLIS(vector<int>& nums) {
vector<int> dp_nums(nums.size(), 1);
vector<int> dp(nums.size(), 1);
int max_len = 1;
for (int i = 1; i < nums.size(); i++){
for (int j = 0; j < i; j++){
if (nums[j] >= nums[i])
continue;
if (dp[j] >= dp[i]){
dp[i] = dp[j]+1;
dp_nums[i] = dp_nums[j];
} else if (dp[j] == dp[i] - 1){
dp_nums[i] += dp_nums[j];
}
}
max_len = max(max_len, dp[i]);
}
int ret = 0;
for (int i = 0; i < nums.size(); i++){
if (dp[i] == max_len)
ret += dp_nums[i];
}
return ret;
}
};