您的位置:首页 > 产品设计 > UI/UE

Longest Ordered Subsequence POJ - 2533

2017-07-03 10:06 417 查看
用DP的两种做法,一种是 “人人为我” , “我为人人”;字面意思;

还有用  *max_element(a,a+n); 头文件 algorithm 方便多了

①:我为人人

#include <stdio.h>

#include <iostream>

#include <string.h>

#include <algorithm>

#define MAXN 1000+5

using namespace std;

int a[MAXN];

int dp[MAXN];

int main(void)

{
int n;
cin >> n;
for(int i=1;i<=n;i++)
scanf("%d",a+i);
for(int i=1;i<=MAXN;i++)
dp[i]=1;
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(a[j]>a[i])
{
dp[j]=max(dp[j],dp[i]+1);
}
}
}
printf("%d\n",*max_element(dp+1,dp+1+n));

}

②:人人为我

#include <stdio.h>

#include <iostream>

#include <string.h>

#include <algorithm>

#define MAXN 1000+5

using namespace std;

int a[MAXN];

int dp[MAXN];

int main(void)

{
int n;
cin >> n;
for(int i=1;i<=n;i++)
scanf("%d",a+i);
for(int i=1;i<=MAXN;i++)
dp[i]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
if(a[j]<a[i])
{
dp[i]=max(dp[i],dp[j]+1);
}
}
}
printf("%d\n",*max_element(dp+1,dp+1+n));

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: