最长有序子序列
来源:互联网 发布:seo自媒体 编辑:程序博客网 时间:2024/06/06 18:32
ACM模版
最长有序子序列
/* * 递增(默认) * 递减 * 非递增 * 非递减 (1)>= && < (2)< (3)>= */const int MAXN = 1001;int a[MAXN], f[MAXN], d[MAXN]; // d[i]用于记录a[0...i]的最大长度int bsearch(const int *f, int size, const int &a){ int l = 0, r = size - 1; while (l <= r) { int mid = (l + r) / 2; if (a > f[mid - 1] && a <= f[mid]) // (1) { return mid; } else if (a < f[mid]) { r = mid - 1; } else { l = mid + 1; } } return -1;}int LIS(const int *a, const int &n){ int i, j, size = 1; f[0] = a[0]; d[0] = 1; for (i = 1; i < n; ++i) { if (a[i] <= f[0]) // (2) { j = 0; } else if (a[i] > f[size - 1]) // (3) { j = size++; } else { j = bsearch(f, size, a[i]); } f[j] = a[i]; d[i] = j + 1; } return size;}int main(){ int i, n; while (scanf("%d", &n) != EOF) { for (i = 0; i < n; ++i) { scanf("%d", &a[i]); } printf("%d\n", LIS(a, n)); // 求最大递增 / 上升子序列(如果为最大非降子序列,只需把上面的注释部分给与替换) } return 0;}
0 0
- 最长有序子序列。
- 最长有序子序列
- 最长有序子序列
- 最长有序子序列
- DP最长有序子序列
- hdu1160--最长有序子序列
- [模板]最长有序子序列
- 最长有序上升子序列
- dp之最长有序子序列
- dp之最长有序子序列
- 最长有序子序列及其路径
- 最长有序子序列--动态规划
- 求最长有序子序列长度
- 最长有序子序列 经典DP
- 最长有序子序列的C++实现代码
- 最长有序子序列—动态规划算法
- 最少拦截系统 hdu 1257 最长有序子序列
- FatMouse's Speed hdu1160 最长有序子序列
- UITabelView自适应高度那些事
- 史上最详细测试用例设计实践-2:解决方案和总结
- CSS 文本垂直居中
- 古往今来中国最经典的50句名言
- StringBuffer,数组排序,Arrays,Character
- 最长有序子序列
- Android zxing生成二维码
- C代码调用uci的API读openwrt配置文件指南
- 详细解析BluetoothAdapter的详细api
- eclipse从git上更新项目
- 隐马尔可夫模型介绍
- ViewPager切换动画PagerTransFormer
- Frame Buffer 与显示屏的对应关系
- 极大似然估计