Number of Longest Increasing Subsequence LeetCode solution in C++
1class Solution {2public:3int findNumberOfLIS(vector<int> &nums) {4int n = nums.size(), maxI = 0, inc = 0;5vector<int> dp(n, 1), count(n, 1);6for (int i = 0; i < n; i++) {7for (int j = 0; j < i; j++) {8if (nums[i] > nums[j] && 1 + dp[j] > dp[i]) {9dp[i] = 1 + dp[j];10count[i] = count[j];11} else if (nums[i] > nums[j] && 1 + dp[j] == dp[i])12count[i] += count[j];13}14maxI = max(maxI, dp[i]);15}16for (int i = 0; i < n; i++)17if (maxI == dp[i]) inc += count[i];18return inc;19}20};