华为OD机试 - 计算面积 - 逻辑分析(Java 2023 B卷 100分)-LMLPHP

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

绘图机器的绘图笔初始位置在原点(0,0)。

机器启动后,其绘图笔按下面规则绘制直线:

  1. 尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E;
  2. 期间可通过指令在纵坐标方向进行偏移,并同时绘制直线,偏移后按规则1绘制直线;
  3. 指令的格式为X offsetY。表示在横坐标X沿纵坐标方向偏移offsetY,offsetY为正整数,表示正向偏移,为负数,表示负向偏移。

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

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

二、输入描述

第一行输入两个正整数N、E。

  • N表示多少条指令;
  • E表示横坐标终点值;

接下来的N行输入两个正整数,表示指令X offsetY。

用例保证横坐标X以递增排序方式出现,且不会出现相同横坐标。

取值范围:

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

三、输出描述

一个整数,表示计算得到的面积。

四、解题思路

  1. 第一行输入两个正整数N、E;
  2. 接下来的N行输入两个正整数,表示指令X offsetY;
  3. X轴坐标 * Y轴坐标计算面积;
  4. 叠加Y轴偏移量;
  5. 重置横坐标X;
  6. 叠加面积(横坐标终点值 - 当前横坐标) * Y轴坐标;
  7. 输出计算得到的面积。

五、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        // 多少条指令
        int N = arr[0];
        // 横坐标终点值
        int E = arr[1];
        int area = 0;
        // X轴偏移量
        int xSkew = 0;
        // Y轴偏移量
        int ySkew = 0;
        // 接下来的N行输入两个正整数,表示指令X offsetY。
        for (int i = 0; i < N; ++i) {
            // 指令X offsetY
            String[] commands = sc.nextLine().split(" ");
            // 横坐标X
            int X = Integer.parseInt(commands[0]);
            // X轴坐标 * Y轴坐标计算面积
            area += Math.abs(ySkew) * (X - xSkew);
            // 叠加Y轴偏移量
            ySkew += Integer.parseInt(commands[1]);
            // 重置横坐标X
            xSkew = X;
        }
        // 叠加面积(横坐标终点值 - 当前横坐标) * Y轴坐标
        area += (E - xSkew) * ySkew;
        System.out.println(area);
    }
}

六、效果展示

1、输入

5 8
1 1
2 2
3 -1
4 -2
5 1

2、输出

9

3、说明

华为OD机试 - 计算面积 - 逻辑分析(Java 2023 B卷 100分)-LMLPHP

华为OD机试 - 计算面积 - 逻辑分析(Java 2023 B卷 100分)-LMLPHP


🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

华为OD机试 - 计算面积 - 逻辑分析(Java 2023 B卷 100分)-LMLPHP

09-18 01:21