华为机试题103-Redraiment的走法

2023-11-19

描述

Redraiment是走梅花桩的高手。Redraiment可以选择任意一个起点,从前到后,但只能从低处往高处的桩子走。他希望走的步数最多,你能替Redraiment研究他最多走的步数吗?

数据范围:每组数据长度满足1≤n≤200 , 数据大小满足 1≤val≤350

输入描述:

数据共2行,第1行先输入数组的个数,第2行再输入梅花桩的高度

输出描述:

输出一个结果

示例1

输入:

6
2 5 1 5 4 5 

输出:

3

说明:

6个点的高度各为 2 5 1 5 4 5
如从第1格开始走,最多为3步, 2 4 5 ,下标分别是 1 5 6
从第2格开始走,最多只有1步,5
而从第3格开始走最多有3步,1 4 5, 下标分别是 3 5 6
从第5格开始走最多有2步,4 5, 下标分别是 5 6
所以这个结果是3。 

解题思路:

这道题我是利用动态规划来写的,动态规划yyds

用动态规划有两个关键点:状态转移方程;边界条件

这里我设dp[i]为从第0格到第i格的最大步数(注意:并不是非得从第0格开始,0到i之间的任意位置开始即可,只要值是最大的,就比如上述的示例1)

边界条件很简单,就是dp[0],显然它的值为1。

举个栗子:

i 0 1 2 3 4 5 6 7 8 9 10
height[i] 1 2 3 2 6 7 1 8 9 12 13
dp[i] 1 2 3 2 4 5 1 6 7 8 9

最后遍历dp数组,其中最大的值就是Redraiment走的最多步数。

代码如下:

#include <stdio.h>
#define    N    200
int main()
{
    int i,j,cnt,height[N],dp[N],max=1;
    scanf("%d",&cnt);
    for(i=0;i<cnt;i++)
    {
        dp[i]=1;            //每个位置的步数都初始化为1
        scanf("%d",&height[i]);
        for(j=0;j<i;j++)            //遍历之前位置的高度和步数值
        {
            if(height[j]<height[i]&&dp[j]+1>dp[i])    //如果当前高度大于之前某个位置的高度,
                dp[i]=dp[j]+1;                        //且之前那个位置的步数加1能够大于
        }                                            //当前位置的步数,则更新当前位置的步数
    }
    for(i=0;i<cnt;i++)
    {
        if(dp[i]>max)      //遍历dp数组,其中的最大值就是在之前某一位置跳到该最大值位置的步数
            max=dp[i];
    }
    printf("%d\n",max);
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为机试题103-Redraiment的走法 的相关文章

  • python3GUI--抖音无水印视频下载工具(附源码)

    文章目录 一 准备工作 二 预览 0 复制抖音分享短链接 1 启动 2 运行 3 结果 三 设计流程 1 总体设计 2 详细设计 四 源代码 五 说明 总结 hello 大家好啊 失踪人口回归了 捂脸 本次使用tkinter撰写一篇 抖音无

随机推荐

  • QML中ListView数据的分组与定位显示

    在QML中ListView的数据分组与定位显示时 以前使用ListView进行数据分组时 都是在model中加入分组数据 分组的项 然后将model中的数据排好序后全部显示到ListView中 这样做也能达到数据分组的目的 但是数据维护太费
  • 为什么List,set,map 不继承Serializable接口

    为什么List set map 不继承Serializable接口 猜测 应该是默认不继承 但实际上可以继承 只要是object都可以实现这个接口只是默认不这样干 有三个可能 一 是不知道怎么实现默认接口 二 不允许实现默认接口 三 暂时没
  • UITextFeild Test

    import
  • selenium的使用

    selenium的使用 0 使用selenium import time from selenium webdriver import Chrome from selenium webdriver common by import By 1
  • mos管的rc吸收电路计算_RCD吸收电路

    一 首先对MOS管的VD进行分段 输入的直流电压VDC 次级反射初级的VOR 主MOS管VD余量VDS RCD吸收有效电压VRCD1 二 对于以上主MOS管VD的几部分进行计算 输入的直流电压VDC 在计算VDC时 是依最高输入电压值为准
  • 大型网站架构不得不考虑的10个问题

    这里的大型网站架构只包括高互动性高交互性的数据型大型网站 基于大家众所周知的原因 我们就不谈新闻类和一些依靠HTML静态化就可以实现的架构了 我们以高负载高数据交换高数据流动性的网站为例 比如海内 开心网等类似的web2 0系列架构 我们这
  • Visual Studio Code 的安装教程和配置C语言环境(详解版)

    最近想装一个VS Code 来写C C 程序 但是看了网上的很多教程发现并不是那么的好 大部分都尝试失败了 摸索了很久找到了一个比较可靠的方法 目录 一 Visual Studio Code 的安装教程 二 接下来就是C语言的环境配置 三
  • (OD)基站维护工程师

    目录 题目描述 输入描述 输出描述 代码 题目描述 小王是一名基站维护工程师 负责某区域的基站维护 某地方有n 个基站 1
  • Rust swap

    文章目录 fn swap lt a gt a a mut String b a mut String let tmp a a b b tmp let mut a aaa to string let mut b bbb to string s
  • 浅解cocos2d-x中的CCSprite绘制原理

    cocos2d x版本为2 0 4 此画图调用的是opengl es 2 0版本 支持三角形画图 故必须有一个顶点数组 此定义定义在CCSprite h中 ccV3F C4B T2F Quad m sQuad 而这个顶点数组的定义为 4 c
  • Altium designer Silkscreen Over Component Pads

    在画pcb的时候 执行设计规则检查的时候总会出现Silkscreen Over Component Pads这个问题 该问题的意思是丝印层的文字和元件焊盘重合或者挨着很近 解决办法1 修改规则 在design rule中选择Silkscre
  • django解决使用DateTimeField添加、修改记录时不动态更新时间的问题

    解决方法 定义model时 若想动态显示最后的修改时间 使用 from django db import models from datetime import datetime models DateTimeField default d
  • 码云协同开发

    一 协同开发 为每一开发者创建一个分支 各自都在各自的分支上写代码 互不影响 完成后再合并dev分支 方式1 创建项目合作者 方式2 创建项目合作者
  • IP组播 —— IP组播的概念和地址

    一 IP数据报的三种传输方式 二 IP组播地址的范围及特点 三 硬件组播
  • SpringBoot找不到主类

    用idea把一个单独的springboot项目打开可以正确执行 可我把整个运维项目都放在一个目录用idea打开 idea识别不到主类 查看edit configurations里面的 main class也指定到了对应的applicatio
  • C#初始化数组的三种方式

    C 声明数组并初始化 有三种方式 对于一维数组 using System using System Data using System Configuration using System Web using System Web Secu
  • jenkins创建html文件夹失败,jenkins html发布者:目录存在,但未能复制到

    难道有人有不同的答案吗 Jenkins安装在Ubuntu 12 04下的tomcat下 我已经配置了使用CVS存储库进行构建 当我尝试进行新构建时 由于以下错误而失败 INFO INFO BUILD SUCCESS INFO INFO To
  • [实习]git ci/cd概念,创建流程以及常见字段含义

    1 基本概念 1 1 CI CD CI Continuous Integration 为持续集成 即在代码构建过程中持续地进行代码的集成 构建 以及自动化测试等 有了 CI 工具 我们可以在代码提交的过程中通过单元测试等尽早地发现引入的错误
  • 【安全脚本】模拟勒索病毒

    0x00 前置 1 将电脑上的重要文件加密 将文件以二进制的方式进行加密处理 导致加密过后的文件 要打开必须要解密 要解密必须要解密程序 2 传播 系统or程序漏洞 人为疏忽 后门或木马程序 3 解决 交钱 破解 数据备份 0x01 pyt
  • 华为机试题103-Redraiment的走法

    描述 Redraiment是走梅花桩的高手 Redraiment可以选择任意一个起点 从前到后 但只能从低处往高处的桩子走 他希望走的步数最多 你能替Redraiment研究他最多走的步数吗 数据范围 每组数据长度满足1 n 200 数据大