您的位置:首页 > 职场人生

nefu987孙大神的面试

2015-08-01 22:34 417 查看
题意是求给定数列中最长的山峰序列

其实就是求最长单调序列的变形==

单调的那个看nefuoj 308 Oliver的恋爱

#include <iostream>

#include<cstdio>

#include<cstring>

using namespace std;

int n,max1,max2;

int dp1[1005],dp2[1005];

int num[1005];

int main()

{

while(~scanf("%d",&n))

{

max1=-1,max2=0;

for(int i=0;i<n;i++) scanf("%d",&num[i]);

for(int i=0;i<n;i++)

{

dp1[i]=1;

for(int j=0;j<i;j++)

{

if(num[j]<num[i]) dp1[i]=max(dp1[i],dp1[j]+1);

}

}

// for(int i=0;i<n;i++) printf("%d ",dp1[i]);printf("\n");

for(int i=n-1;i>=0;i--)

{

dp2[i]=1;

for(int j=n-1;j>i;j--)

{

if(num[i]>num[j]) dp2[i]=max(dp2[i],dp2[j]+1);

}

}

// for(int i=0;i<n;i++) printf("%d ",dp2[i]);printf("\n");

for(int i=0;i<n;i++)

{

max1=max(max1,dp1[i]+dp2[i]-1);

}

printf("%d\n",max1);

}

return 0;

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