leetcode 300
连续增长子序列的个数,典型的动态规划
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
int lengthOfLIS(std::vector<int>& nums) {
int len = nums.size();
int res = len;
std::vector<int> seq_res(len, 0);
int i = 0;
int j = 0;
seq_res[0] = 1;
for (i = 0; i < len; i++) {
int max = 1;
for (j=i-1; j >= 0; j--) {
if (nums[i] > nums[j]) {
if (seq_res[j] + 1 > max) {
max = seq_res[j] + 1;
}
}
}
seq_res[i] = max;
}
res = 1;
for (const auto& e : seq_res) {
if (e > res) res = e;
}
return res;
}
int main(int argc, char* argv[]) {
int arr[] = {10,9,2,5,3,7,101,11,18};
std::vector<int> nums;
int len = sizeof(arr)/sizeof(int);
for (int i = 0; i < len; i++) {
nums.push_back(arr[i]);
}
int res = lengthOfLIS(nums);
std::cout << "num of larger sequence is: " << res << std::endl;
return 0;
}