题目描述 

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

输入描述:

 

输入多行,先输入数组的个数,再输入相应个数的整数

输出描述:

 

输出结果

示例1

输入

复制

6
2
5
1
5
4
5

输出

复制

3

 题目分析:

本题是一个典型的动态规划算法应用的问题。

DP全称是dynamic programming,这里programming不是编程,是一个表格保存之前的结果。

DP 是一种编程思想,主要用于解决最优解类型的问题。

其思路是为了求解当前的问题的最优解,使用子问题的最优解,然后综合处理,最终得到原问题的最优解。

解题思路:

建立一个数组,专门用来存放以i结尾的最大的升序的子序列的元素个数。

比如

2 5 1 5 4 5

对应的相应位置的最大子序列,及元素个数为

第一个子序列为,长度为1

2                    1

第二个子序列,将前面1个元素对比。因为5 > 2,所以

位置2处的最大子序列长度为2。子序列为2 5

2 5                 2

以位置3处元素结尾的最大子序列,因为前面的元素都比1小。所以

位置3处的最大子序列长度为1。子序列为1

1                    1

位置4处的最大子序列长度为2。子序列为2 5

2 5                 2

位置5处的最大子序列长度为2。子序列为2 4

2 4                 2

位置6处的最大子序列长度为3。子序列为2 4 5

2 4  5               3

将位置6处的元素与前面5个位置处的元素挨个比较。保存最大值。

和位置1处的元素比较以后,最大值为1+1。

和位置5处的元素比较以后,最大值为2+1。

记录最大值即可。结果为3。

当最大值元素变更时,相应变更系统最大的步数。

#include <iostream>
#include <vector>using namespace std;int main()
{int n, val;vector<int> arr;vector<int> step;while(cin >> n){while(n--){cin >> val;arr.push_back(val);step.push_back(1);}int max = 0;for(int i = 1; i < arr.size(); i++){int step_val = 1;int step_max = 1;for(int j = 0; j < i; j++){if(arr[i] > arr[j]){step_val = step[j] + 1;if(step_val > step_max){step_max = step_val;}}}step[i] = step_max;if(step_max > max){max = step_max;}}arr.clear();step.clear();cout << max << endl;}return 0;
}

C++:梅花桩算法题相关推荐

  1. Re: 求助:5道算法题

    http://www.newsmth.net/frames.html 发信人: cutepig (cutepig), 信区: Algorithm 标  题: 求助:5道算法题 发信站: 水木社区 (S ...

  2. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法

    原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢&quo ...

  3. 算法总结---最常用的五大算法(算法题思路)

    算法总结---最常用的五大算法(算法题思路) 一.总结 一句话总结: [明确所求:dijkstra是求点到点的距离,辅助数组就是源点到目标点的数组] [最简实例分析:比如思考dijkstra:假设先只 ...

  4. BAT七年经验,却抵不过外企面试的两道算法题?

    整理| 琥珀 出品| AI科技大本营 又遇年底跳槽季,如果你曾在 BAT 等互联网大厂有过较为丰富的工作经验,想要换份工作,面试时会主要考虑哪些因素? 面试外企,却被两道算法题难住? 近日,一位网友在 ...

  5. 字节跳动面试官:你离50w年薪就差答对了这个算法题!

    我有个朋友,最近去头条面试,因为算法题没写出来,直接面挂了,搞得他非常郁闷. 众所周知,算法对程序员来说越来越重要了,但是总有人抱有一丝侥幸,不肯投入精力去学习,想着现在的工作中反正也用不到,等找工作 ...

  6. 一道看完答案你会觉得很沙雕的「动态规划算法题」

    这道算法题其实并不难,如果你把文章从头到尾看完的话基本上能看懂,但如果你看到最后的话大概率会说一句:这是什么沙雕题目?! 题目来源于 LeetCode 第 877 号问题:石子游戏. 为了更好理解,我 ...

  7. 经典算法题之Maximal Square

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:叶    虎 Maximal Square是道非常有意思的算 ...

  8. JAVA 判断简单密码算法_十道简单算法题二【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  9. 算法笔记-链相关、链的基础、单链双链环链、链的各种功能实现、链的算法题、面试题以及算法优化方法(多)、C#

    1. 链定义及其基础 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.这组存储单元既可以是连续的,也可以是不连续的. 链表定义: 链表是一种线性表数据结构: 从底层存储 ...

最新文章

  1. android联动动画,利用 CollapsingToolbarLayout 完成联动的动画效果
  2. 如何找到foreach索引
  3. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解
  4. (转)rlwrap真是一个好东西
  5. canvas requestAnimationFrame 动画
  6. AI公开课:19.02.20 雷鸣教授《人工智能革命与机遇》课堂笔记以及个人感悟
  7. .NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(下)
  8. 【LeetCode 剑指offer刷题】查找与排序题12:Top K Frequent Elements
  9. python监控服务器信息进行可视化_Python实现数据可视化,看如何监控你的爬虫
  10. linux清指令,Linux隐匿和清除的几条命令
  11. java map集合使用_JAVA中Map集合的使用举例
  12. 【优化算法】粒子群工具箱函数优化算法【含Matlab源码 1126期】
  13. 数论入门(基础定义)
  14. js 去除空格与换行
  15. 五脏与五声 五脏排毒法(五声功)
  16. 基于钉钉的多人协作项目办公
  17. Rust的错误处理机制
  18. 核心单词Word List 46
  19. JVM知识点精华汇总 侵立删
  20. UltraISO制作系统ISO镜像

热门文章

  1. 前端与后端接口的交互案例
  2. JAVA集合1(Collection接口,iterator()方法,增强型for循环)
  3. AI | 一次无监督学习的尝试(皮肤分类)
  4. ubuntu下的 ps 命令
  5. cura开发调试环境的安装
  6. 这家大数据创业公司要教西雅图妹子们如何穿衣
  7. CM211-2-CH-通刷Hi3798MV300/MV310-当贝纯净桌面-卡刷固件包
  8. Python 画降雨图,mash 数据掩膜 裁剪出想要的区域,根据shp文件裁剪tif数据
  9. 题库 1178:CapsLock
  10. openpyxl处理EXCEL