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;
}
其实就是求最长单调序列的变形==
单调的那个看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;
}
相关文章推荐
- JS函数式编程【译】2.3 函数式程序员的工具集
- 剑指Offer面试题18(Java版):树的子结构
- 剑指Offer面试题17(Java版):合并两个排序的链表
- 黑马程序员------OC block(代码块)和protocol(协议)
- ios面试题分享
- 黑马程序员——java基础_面向对象
- 黑马程序员——数组
- 黑马程序员——流程控制
- 黑马程序员——基础语法
- 黑马程序员——OC中的封装
- 黑马程序员——初入Java
- 黑马程序员 第十篇 控制逻辑(foundation, completed)
- C语言面试题
- 【练习笔记】剑指offer-面试题8 :旋转数组的最小数字
- 【剑指Offer面试题】 九度OJ1368:二叉树中和为某一值的路径
- 优秀程序员必须知道的32个算法,提高你的开发效率
- 个人总结的一些面试技巧
- 程序员
- 【剑指Offer面试题】 九度OJ1367:二叉搜索树的后序遍历序列
- 技术人员如何去面试?