最长上升子序列 | 您所在的位置:网站首页 › lis算法 › 最长上升子序列 |
AcWing 895. 最长上升子序列 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数N。 第二行包含N个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤1000, −109≤数列中的数≤109 输入样例: 7 3 1 2 1 8 5 6输出样例: 4 思路
此处要分析动态规划中的状态表示,f[i]的意义是以第i个为结尾的上升子序列,而我们需要求的属性是MAX,对于f[i]我们可以划分为 以i之前一个数为结尾的上升子序列 + 1,此处需满足条件是a[i] > a[j]. 最后需要遍历所有f,来存一个最大值 #include #include using namespace std; const int N = 1010; int n; int a[N], f[N];//f[i]表示所有以i结尾的严格单调上升的子序列的最大长度 int main() { scanf("%d", &n); for (int i = 1; i scanf("%d", &n); for (int i = 0; i int mid = l + r + 1 >> 1; if (q[mid] |
CopyRight 2018-2019 实验室设备网 版权所有 |