C++:梅花桩算法题
题目描述
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++:梅花桩算法题相关推荐
- Re: 求助:5道算法题
http://www.newsmth.net/frames.html 发信人: cutepig (cutepig), 信区: Algorithm 标 题: 求助:5道算法题 发信站: 水木社区 (S ...
- 经典算法题每日演练——第六题 协同推荐SlopeOne 算法
原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢&quo ...
- 算法总结---最常用的五大算法(算法题思路)
算法总结---最常用的五大算法(算法题思路) 一.总结 一句话总结: [明确所求:dijkstra是求点到点的距离,辅助数组就是源点到目标点的数组] [最简实例分析:比如思考dijkstra:假设先只 ...
- BAT七年经验,却抵不过外企面试的两道算法题?
整理| 琥珀 出品| AI科技大本营 又遇年底跳槽季,如果你曾在 BAT 等互联网大厂有过较为丰富的工作经验,想要换份工作,面试时会主要考虑哪些因素? 面试外企,却被两道算法题难住? 近日,一位网友在 ...
- 字节跳动面试官:你离50w年薪就差答对了这个算法题!
我有个朋友,最近去头条面试,因为算法题没写出来,直接面挂了,搞得他非常郁闷. 众所周知,算法对程序员来说越来越重要了,但是总有人抱有一丝侥幸,不肯投入精力去学习,想着现在的工作中反正也用不到,等找工作 ...
- 一道看完答案你会觉得很沙雕的「动态规划算法题」
这道算法题其实并不难,如果你把文章从头到尾看完的话基本上能看懂,但如果你看到最后的话大概率会说一句:这是什么沙雕题目?! 题目来源于 LeetCode 第 877 号问题:石子游戏. 为了更好理解,我 ...
- 经典算法题之Maximal Square
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:叶 虎 Maximal Square是道非常有意思的算 ...
- JAVA 判断简单密码算法_十道简单算法题二【Java实现】
前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...
- 算法笔记-链相关、链的基础、单链双链环链、链的各种功能实现、链的算法题、面试题以及算法优化方法(多)、C#
1. 链定义及其基础 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.这组存储单元既可以是连续的,也可以是不连续的. 链表定义: 链表是一种线性表数据结构: 从底层存储 ...
最新文章
- android联动动画,利用 CollapsingToolbarLayout 完成联动的动画效果
- 如何找到foreach索引
- 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解
- (转)rlwrap真是一个好东西
- canvas requestAnimationFrame 动画
- AI公开课:19.02.20 雷鸣教授《人工智能革命与机遇》课堂笔记以及个人感悟
- .NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(下)
- 【LeetCode 剑指offer刷题】查找与排序题12:Top K Frequent Elements
- python监控服务器信息进行可视化_Python实现数据可视化,看如何监控你的爬虫
- linux清指令,Linux隐匿和清除的几条命令
- java map集合使用_JAVA中Map集合的使用举例
- 【优化算法】粒子群工具箱函数优化算法【含Matlab源码 1126期】
- 数论入门(基础定义)
- js 去除空格与换行
- 五脏与五声 五脏排毒法(五声功)
- 基于钉钉的多人协作项目办公
- Rust的错误处理机制
- 核心单词Word List 46
- JVM知识点精华汇总 侵立删
- UltraISO制作系统ISO镜像