题目链接:点击打开链接
解:
最优子结构
代码C++:
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <set>
#include <stack>
#include <queue>
using namespace std;
const int N = 10000;
int table[N][N] = {0};
int lengthOfLIS(vector<int>& nums) {
int len = nums.size();
if (len == 0){return 0;}
int a[len] = {0};
for(int i=1; i<len; i++){
for(int j=0; j<i; j++){
if (nums[i] > nums[j]){
a[i] = max(a[i],a[j] + 1);
}
}
}
int m = 0;
for(int i=0; i<len; i++){
if (m<a[i]){m=a[i];}
cout << a[i] <<" ";
} cout << endl;
return m+1;
}
int main()
{
int a[] = {1,3,6,7,9,4,10,5,6};
vector<int> nums(a, &a[8]);
cout << lengthOfLIS(nums) << endl;
return 0;
}