#include <iostream>
#include <vector>
using namespace std;
int LIS(vector<int>& nums)
{
int len = nums.size();
vector<int> dp(len, 0);
//int *dp = new int[len];
dp[0] = 1;
int ans;
for (int i = 1; i < len; ++i)
{
ans = dp[i];
for (int j = 0; j < i; ++j)
{
if (nums[i]>nums[j] && dp[j]>ans)
ans = dp[j];
}
dp[i] = ans + 1;
}
ans = 0;
for (int i = 0; i < len; ++i)
{
if (dp[i]>ans)
ans = dp[i];
}
return ans;
}
int main()
{
vector<int> nums;
nums.push_back(1);
nums.push_back(7);
nums.push_back(3);
nums.push_back(5);
nums.push_back(9);
nums.push_back(4);
nums.push_back(8);
int ret = LIS(nums);
cout << ret << endl;
system("PAUSE");
return 0;
}
参考文献:
http://blog.csdn.net/wy19910326/article/details/7229350