DP中的LIS:longest increasing subsequence

来源:互联网 发布:淘宝怎么修改商品类目 编辑:程序博客网 时间:2024/06/04 08:58

DP基本都会讲到的一个问题LIS:longest increasing subsequence。

今晚上看了下动态规划, 求解了一下这个lis问题。 

首先得看下在wiki上的对longest increasing subsquence的定义和解释:wiki

代码如下:

#include <iostream>using namespace std;int LIS(int A[], int len){int *d = new int[len];int longest_sub = 1;d[0] = 1; /*for (int i = 1; i < len; i++){d[i] = 1;if (A[i-1] <= A[i]){d[i] = d[i-1] + 1;}if (d[i] > longest_sub){longest_sub = d[i];}} */for (int i = 0; i < len; i++){d[i] = 1;for (int j = 0; j < i; j++){if (A[i-1] <= A[i] && d[j] + 1 > d[i]){d[i] = d[j] + 1;}}if (d[i] > longest_sub){longest_sub = d[i];}}delete [] d;return longest_sub;}int main(){int A[] = {5, 3, 4, 8, 6, 7};int ls = LIS(A, 6);cout << "********************************" << endl;std::cout << ls << std::endl;return 0;}

如有错误,请指出,谢谢。

原创粉丝点击