华为OJRedraiment的走法

来源:互联网 发布:旅游cms开源 编辑:程序博客网 时间:2024/09/21 09:21

描述

题目描述 

   Redraiment是走梅花桩的高手。Redraiment总是起点不限,从前到后,往高的桩子走,但走的步数最多,不知道为什么?你能替Redraiment研究他最多走的步数吗? 

 

样例输入

6

2 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>    #include <vector>#include <string>#include <algorithm>using namespace std;int GetUpSeries(vector<int> src){int N = src.size();vector<int> dst;dst.resize(N);for (int i = 0; i < N; i++){dst[i] = 1;}for (int i = 0; i < N; i++){for (int j = 0; j < i; j++){if (src[j]<src[i] && dst[j] + 1>dst[i]){dst[i] = dst[j] + 1;}}}int max = 0;for (int i = 0; i < N; i++){if (dst[i]>max)max = dst[i];}return max;}void main(){int N;cin >> N;vector<int> vec;for (int i = 0; i < N; i++){int tmp;cin >> tmp;vec.push_back(tmp);}cout << GetUpSeries(vec) << endl;}


0 0