1、题目
最长递增子序列,总共有几个
二、解题思路
最长递增子序列进阶版本300
求出最长递增子序列的长度,在同时,求出有几个这样的最长递增子序列
动态规划
三、代码
class Solution {
public:
int findNumberOfLIS(vector<int>& nums) {
int size=nums.size();
if(size==0){
return 0;
}
else if(size==1){
return 1;
}
vector<int>dp(size,1);
vector<int>ans(size,1);
int count=1;
int OuntPut=0;
for(int i=0;i<size;++i){
for(int j=0;j<i;++j){
if(nums[j]<nums[i]){
if(dp[i]<dp[j]+1){
dp[i]=dp[j]+1;
ans[i]=ans[j];
}
else if(dp[i]==dp[j]+1){
ans[i]+=ans[j];
}
}
}
if(count<dp[i]){
count=dp[i];
OuntPut=ans[i];
}
else if(count==dp[i]){
OuntPut+=ans[i];
}
}
return OuntPut;
}
};