您的位置:首页 > 大数据 > 人工智能

华为OJ(Redraiment的走法)

2015-08-19 10:56 363 查看
描述
题目描述
Redraiment是走梅花桩的高手。Redraiment总是起点不限,从前到后,往高的桩子走,但走的步数最多,不知道为什么?你能替Redraiment研究他最多走的步数吗?  样例输入62 5 1 5 4 5 样例输出3 提示Example:
6个点的高度各为 2 5 1 5 4 5
如从第1格开始走,最多为3步, 2 4 5
从第2格开始走,最多只有1步,5
而从第3格开始走最多有3步,1 4 5
从第5格开始走最多有2步,4 5所以这个结果是3。 接口说明方法原型:    int GetResult(int num, int[] pInput, List  pResult);输入参数:
int num:整数,表示数组元素的个数(保证有效)。
int[] pInput: 数组,存放输入的数字。输出参数:
List pResult: 保证传入一个空的List,要求把结果放入第一个位置。
返回值:
正确返回1,错误返回0

知识点排序
运行时间限制10M
内存限制128
输入输入多行,先输入数组的个数,再输入相应个数的整数
输出输出结果
样例输入6 2 5 1 5 4 5
样例输出3
这是个求最大递增子序列问题,可以用动态规划解决,和合唱队问题类似,比合唱队问题还简单,稍作修改即可。
#include<iostream>
using namespace std;
int main()
{
int n,maxstep=0;
cin>>n;
int *step=new int[n+1];
int *height=new int
;
for(int i=0;i<n;i++)
{
cin>>height[i];
step[i]=1;
}
step
=1;
for(int i=1;i<n;i++)
for(int j=0;j<i;j++)
if(height[i]>height[j]&&step[j]+1>step[i])
{
step[i]=step[j]+1;
if(step[i]>maxstep)
maxstep=step[i];
}
cout<<maxstep<<endl;
//system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: