题目 2011: 电导流的矩形

时间限制: 1Sec 内存限制: 128MB

题目描述:(原题链接)

     地图上有若干个导电矩形,长度大小不一(矩形四个角的坐标x,y<=10000)而且电工觉得,反正矩形很标准,边都平行于坐标轴,所以矩形随便给两个对角的点就够了……这电工觉得你够聪明。
     在某个位置有一个电针,而且放出了一股电流,只有包含(包括在边界上)了电针的矩形才有可能将这电流导流,而最终面积最大的矩形是导流的矩形。
     求这个矩形是输入数据中给出的第几个矩形


输入:

    第一行是一个数字n,表示矩形个数
    接下来n行,
    每行4个整数,x1,y1,x2,y2,表示第i号矩形对角的坐标
    接下来1行,两个整数x,y,表示电针的坐标

样例输入:

3
6 8 2 3
1 3 5 6
8 2 1 9
4 4


输出:

一个整数,表示导流的矩形的编号(如果面积相等,那么编号尽可能的小)

样例输出 :

3


解题思路:

     如下,计算矩形的面积并比较大小,记录最大矩形的编号

注意事项:

     注意矩形对角线点的大小关系

参考代码:

import java.util.Scanner;
/**
 * 2021年2月16日  下午8:32:46
 * @author Valois
 */
public class Main {
    public static void main(String []args) {
        Scanner in =new Scanner(System.in);
        int n=in.nextInt();
        int arr[][]= new int[n][4];
        for(int i=0;i<n;i++)
            for(int j=0;j<4;j++)
                arr[i][j]=in.nextInt();  //构建矩形
        int x=in.nextInt(),y=in.nextInt(),tmparea=0,index=0;   //tmpare为暂存最大面积,index记录最大面积的下标
        for(int i=0;i<n;i++) {
            int maxx=Math.max(arr[i][0], arr[i][2]),minx=Math.min(arr[i][0], arr[i][2]); 
            int maxy=Math.max(arr[i][1], arr[i][3]),miny=Math.min(arr[i][1], arr[i][3]);
            int area =(maxx-minx)*(maxy-miny); //计算每个矩形的面积
            if(x>=minx&&x<=maxx&&y>=miny&&y<=maxy&&tmparea<area) { //若点在该矩形且该矩形面积比最大面积大则更新tempare及index
                tmparea=area;index=i;
            }
        }
        System.out.println(index+1);  //数组最大导流矩形的编号
        in.close();
   }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值