DP入门,最长上升子序列,ZJU 2136
来源:互联网 发布:数据标准化的目的 编辑:程序博客网 时间:2024/06/04 01:22
ZJU 2136 Longest Ordered Subsequence
#include<iostream>#include<stdio.h> //Zju 用scanf,printf必须的using namespace std;#define N 1000int v[N];//存放数值int f[N];//辅助数组,存放LOS长度//状态:f[i],以第i个元素(v[i])为最后一个元素的最长上升子序列的长度//方程:f[i]=max(f[j]+1, f[i]), 0<=j<i && v[i]>v[j]/*初值:f[i]=1,0<=i<n,考虑只有v[i]一个数时的上升序列的长度;若只是f[0]=1,其他f[i]为0,则对于测试:4 2 1 3结果为1,出错!*///结果:f[]中的最大值int dpLos(int n){int i, j, maxVal;for(i=0;i<n;i++) f[i]=1;//每个数自己构成长度为1的升序序列 for(i=1;i<n;i++) //从第2个数开始算 { for(j=0;j<i;j++) { if(v[i]>v[j] && f[i]<f[j]+1) //下降序列:v[i]<v[j]{f[i]=f[j]+1; } } }maxVal=f[0];for(i=1;i<n;i++){if (f[i]>maxVal) maxVal=f[i];} return maxVal;}void run(int now){ int i, n; scanf("%d", &n); for(i=0;i<n;i++) scanf("%d", &v[i]); if (now>1) printf("\n"); printf("%d\n", dpLos(n));}int main(){#ifndef ONLINE_JUDGE freopen("e:\\input.txt","r",stdin);#endifint T, i;scanf("%d", &T);for(i=1; i<=T; i++) run(i);return 0;}
- DP入门,最长上升子序列,ZJU 2136
- sdut1299最长上升子序列(dp入门)
- 最长上升子序列 dp
- DP--最长上升子序列
- dp入门---最长上升子序列--nefu 21
- hdu 1069 dp入门 最长上升子序列变形
- PKU2533 最长上升子序列 DP
- PKU1631 最长上升子序列 DP
- 最长上升子序列 (dp)
- 最长公共上升子序列 (dp)
- realoj 134 DP 最长上升子序列
- dp之最长上升子序列
- [DP]最长公共上升子序列LCIS
- 最长上升子序列(DP)
- [DP] OpenJudge 2757 最长上升子序列
- HDU1087(最长上升子序列DP)
- poj1631 dp 最长上升子序列LIS
- OpenJudge_P1759 最长上升子序列(DP)
- 【读书笔记】TiJava——内部类使用范例:温室控制器
- jQuery EasyUI DataGrid 无法全选、单选失效问题
- 2011-11-17
- 插件51:在线用户
- 怎样才能炼成iOS开发高手呢?
- DP入门,最长上升子序列,ZJU 2136
- Endnote格式下载
- String.format 方法使用介绍
- scott is locked
- 大端小端,数组地址
- break和continue的区别
- 关于多线程编程文章
- 成员资格介绍
- Linux--常用命令--last