当前位置: 首页 > news >正文

华为OD机试真题——矩形相交的面积(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

在这里插入图片描述

2025 A卷 100分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《矩形相交的面积》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C

GO


题目名称:矩形相交的面积


  1. 知识点:几何计算、边界判断
  2. 时间限制:1秒
  3. 空间限制:256MB
  4. 限定语言:不限

题目描述

在平面直角坐标系中,给定3个矩形,每个矩形由其左上角坐标(x, y)、宽度(w)和高度(h)表示,格式为 (x, y, w, h)。其中:

  • x, y 为矩形左上角的坐标,满足 -1000 ≤ x, y < 1000
  • w, h 为正整数,表示矩形向右延伸 w 单位、向下延伸 h 单位。
  • 矩形区域定义为:x轴范围 [x, x+w),y轴范围 [y-h, y)

输入描述
输入共3行,每行包含4个整数,分别表示一个矩形的 x, y, w, h

输出描述
输出3个矩形相交区域的面积,若不相交则输出 0

示例
输入:

1 6 4 4  
3 5 3 4  
0 3 7 3  

输出:

2  

说明:三个矩形相交的区域面积为2。


Java

问题分析

我们需要计算三个矩形的相交区域面积。每个矩形由其左上角坐标 (x, y)、宽度 (w) 和高度 (h) 定义,其中矩形在 x 轴的范围是 [x, x + w),在 y 轴的范围是 [y - h, y)。三个矩形相交的面积是它们在 x 轴和 y 轴上共同重叠区域的乘积。

解题思路

  1. 解析输入:读取三个矩形的参数。
  2. 计算每个矩形的坐标范围:将每个矩形的 x 轴和 y 轴范围表示为区间。
  3. 求交集:找到三个矩形在 x 轴和 y 轴上的最大左边界和最小右边界。
  4. 计算面积:若交集存在(即左边界 < 右边界),面积即为宽高乘积,否则为 0。

代码实现

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取并解析三个矩形的参数int[][] rects = new int[3][4];for (int i = 0; i < 3; i++) {String line = scanner.nextLine().trim();String[] parts = line.split("\\s+");for (int j = 0; j < 4; j++) {rects[i][j] = Integer.parseInt(parts[j]);}}// 计算每个矩形的x轴和y轴范围int[] xStarts = new int[3];int[] xEnds = new int[3];int[] yStarts = new int[3];int[] yEnds = new int[3];for (int i = 0; i < 3; i++) {int x = rects[i][0];int y = rects[i][1];int w = rects[i][2];int h = rects[i][3];xStarts[i] = x;                // x轴左边界xEnds[i] = x + w;              // x轴右边界yStarts[i] = y - h;            // y轴下边界yEnds[i] = y;                  // y轴上边界}// 计算x轴的交集:最大左边界和最小右边界int maxXStart = Math.max(xStarts[0], Math.max(xStarts[1], xStarts[2]));int minXEnd = Math.min(xEnds[0], Math.min(xEnds[1], xEnds[2]));int width = minXEnd - maxXStart;   // 交集宽度// 计算y轴的交集:最大下边界和最小上边界int maxYStart = Math.max(yStarts[0], Math.max(yStarts[1], yStarts[2]));int minYEnd = Math.min(yEnds[0], Math.min(yEnds[1], yEnds[2]));int height = minYEnd - max

相关文章:

  • 线性代数入门:轻松理解二阶与三阶行列式的定义与理解
  • 【课堂笔记】EM算法
  • 华为OD机试真题——AI面板识别(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • Windows MongoDB C++驱动安装
  • JavaScript性能优化实战技术文章大纲
  • 【计算机网络】第2章:应用层—Web and HTTP
  • MySQL、PostgreSQL、Oracle 区别详解
  • 重新测试deepseek Jakarta EE 10编程能力
  • 2025LitCTF 复现
  • Java 对接 Office 365 邮箱全攻略:OAuth2 认证 + JDK8 兼容 + Spring Boot 集成(2025 版)
  • DEEPSEEK帮写的STM32消息流函数,直接可用.已经测试
  • PaddleOCR本地部署 (Python+Flask)
  • 【Linux 基础知识系列】第二篇-Linux 发行版概述
  • 代码随想录算法训练营 Day59 图论Ⅸ dijkstra优化版 bellman_ford
  • ADB识别手机系统弹授权框包含某段文字-并自动点击确定按钮
  • HTTP/HTTPS与SOCKS5三大代理IP协议,如何选择最佳协议?
  • Nginx详解(三):ngx_http_rewrite_module模块核心指令详解
  • python同步mysql数据
  • 报错SvelteKitError: Not found: /.well-known/appspecific/com.chrome.devtools.json
  • macOS 安装 Grafana + Prometheus + Node Exporter
  • b2c电商网站账户/能打开各种网站的浏览器
  • 网站建设优化服务精英/百度seo新站优化
  • 长沙建网站一般多少钱/微信群免费推广平台
  • 昆山建设网站/百度收录权重
  • 外贸网站如何做外链/百度手机点击排名工具
  • 移动端网站优化/企业内训机构