华为OD机试真题 - 绘图机器 (D卷,100分)

题目描述

绘图机器的绘图笔初始位置在原点(0,0)机器启动后按照以下规则来进行绘制直线。

1. 尝试沿着横线坐标正向绘制直线直到给定的终点E

2. 期间可以通过指令在纵坐标轴方向进行偏移,offsetY为正数表示正向偏移,为负数表示负向偏移

给定的横坐标终点值E 以及若干条绘制指令,

请计算绘制的直线和横坐标轴以及x=E的直线组成的图形面积。

目录

题目描述

输入描述

输出描述

用例

题目解析

Java算法源码

JS算法源码

Python算法源码

C算法源码

华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100分,第三道为中等或困难题,分值为200分。总分为400分,150分钟,机试是在牛客考试,练习的时候也可以在牛客网练习,提前熟悉操作

https://ac.nowcoder.com/acm/contest/5652/K

点击上方链接进入牛客练习界面,可以自定义题目,自定义输入、输出等等,华为OD真实机试环境,非其他第三方平台模拟。

输入描述

  • 首行为两个整数 N 和 E
  • 表示有N条指令,机器运行的横坐标终点值E
  • 接下来N行 每行两个整数表示一条绘制指令x offsetY
  • 用例保证横坐标x以递增排序的方式出现
  • 且不会出现相同横坐标x

取值范围

  • 0<N<=10000
  • 0<=x<=E<=20000
  • -10000<=offsetY<=10000

输出描述

  • 一个整数表示计算得到的面积 用例保证结果范围在0到4294967295之内。

用例

题目解析

  1. 首先,根据给定的横坐标终点值E和绘制指令,计算出每个横坐标对应的纵坐标。
  2. 然后,将每个横坐标对应的纵坐标与横坐标轴进行比较,得到每个横坐标对应的面积。
  3. 最后,将所有横坐标对应的面积相加,得到总面积。

具体实现步骤如下:

  1. 初始化一个列表heights,用于存储每个横坐标对应的纵坐标。
  2. 遍历绘制指令,对于每条指令,将横坐标x对应的纵坐标更新为offsetY。
  3. 初始化一个变量area为0,用于存储总面积。
  4. 遍历heights列表,对于每个纵坐标,计算其与横坐标轴之间的面积,并累加到area中。
  5. 输出area作为结果。

Java算法源码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int endX = sc.nextInt();

        long ans = 0;

        long lastX = 0;
        long lastY = 0;

        for (int i = 0; i < n; i++) {
            int curX = sc.nextInt();
            int offsetY = sc.nextInt();

 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024华为OD机试题库D卷 文章被收录于专栏

2024年5-11月份考的D卷,不用再看AB卷,CD卷题目一样。多种语言解法,欢迎提供更好的解法。

全部评论
机试350分,十分感谢
点赞
送花
回复 分享
发布于 06-21 12:19 广东

相关推荐

华为 终端云BG 一个月n-3 base
点赞 评论 收藏
分享
2 1 评论
分享
牛客网
牛客企业服务