poj 2533 数组的最长上升子序列

来源:互联网 发布:linux shell 数值计算 编辑:程序博客网 时间:2024/05/21 20:21
#include <iostream>#include<stdio.h>#include <cstring>using namespace std;#define MAX_N (1000+1)int N[MAX_N];int dp[MAX_N]; //dp[i] 以N[i]为最大元素的刚好截止于i的 lcis最大长度// int n;int main(){while(cin>>n){int maxp;for(int i=1;i<=n;i++)cin>>N[i];N[0]=-1; //这里设置N[0] = -1是因为 N integers in the range from 0 to 10000 eachmemset(dp,0,sizeof(dp));dp[0]=0;for(int i=1;i<=n;i++){maxp=-1;for(int j=0;j<i;j++){if(N[i] > N[j] && dp[j] > maxp){maxp=dp[j];}}dp[i] = maxp+1;}maxp = -1;for(int i=1;i<=n;i++)if(dp[i] > maxp)maxp = dp[i];cout<<maxp<<endl;}}

原创粉丝点击