华为OD机试-计算面积-逻辑分析(Java2023B卷100分)
- 创业
- 2025-08-19 02:27:01

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
专栏导读本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述绘图机器的绘图笔初始位置在原点(0,0)。
机器启动后,其绘图笔按下面规则绘制直线:
尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E;期间可通过指令在纵坐标方向进行偏移,并同时绘制直线,偏移后按规则1绘制直线;指令的格式为X offsetY。表示在横坐标X沿纵坐标方向偏移offsetY,offsetY为正整数,表示正向偏移,为负数,表示负向偏移。给定了横坐标终点值E,以及若干条绘制指令。
请计算绘制的直线和横坐标轴,以及X-E的直线组成图形的面积。
二、输入描述第一行输入两个正整数N、E。
N表示多少条指令;E表示横坐标终点值;接下来的N行输入两个正整数,表示指令X offsetY。
用例保证横坐标X以递增排序方式出现,且不会出现相同横坐标。
取值范围:
0<N<=100000<X<=E<=20000-10000<=offsetY<=10000 三、输出描述一个整数,表示计算得到的面积。
四、解题思路 第一行输入两个正整数N、E;接下来的N行输入两个正整数,表示指令X offsetY;X轴坐标 * Y轴坐标计算面积;叠加Y轴偏移量;重置横坐标X;叠加面积(横坐标终点值 - 当前横坐标) * Y轴坐标;输出计算得到的面积。 五、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机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
华为OD机试-计算面积-逻辑分析(Java2023B卷100分)由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“华为OD机试-计算面积-逻辑分析(Java2023B卷100分)”
下一篇
GDB用法之参数输入