打赏

笔试题算法系列(二)百度裁剪网格纸

  度度熊有一张网格纸,但是纸上有一些点过的点,每个点都在网格点上,若把网格看成一个坐标轴平行于网格线的坐标系的话,每个点可以用一对整数x,y来表示。度度熊必须沿着网格线画一个正方形,使所有点在正方形的内部或者边界。然后把这个正方形剪下来。问剪掉正方形的最小面积是多少。

输入描述:
第一行一个数n(2≤n≤1000)表示点数,接下来每行一对整数xi,yi(-1e9<=xi,yi<=1e9)表示网格上的点
输出描述:
一行输出最小面积
输入例子1:
2
0 0
0 3
输出例子1:
9

代码如下:
 1 import java.util.Scanner;
 2 public class Main{
 3     public static void main(String [] args){
 4         Scanner sc = new Scanner(System.in);
 5         String [] line;
 6         while(sc.hasNext()){
 7             line = sc.nextLine().split(" ");
 8             int n = Integer.parseInt(line[0]);
 9             line = sc.nextLine().split(" ");
10             int x0 = Integer.parseInt(line[0]);
11             int y0 = Integer.parseInt(line[1]);
12             int minX = x0;
13             int maxX = x0;
14             int minY = y0;
15             int maxY = y0;
16             for(int i=1; i<n; i++){
17                 line = sc.nextLine().split(" ");
18                 int xi = Integer.parseInt(line[0]);
19                 int yi = Integer.parseInt(line[1]);
20                 minX = Math.min(minX, xi);
21                 maxX = Math.max(maxX, xi);
22                 minY = Math.min(minY, yi);
23                 maxY = Math.max(maxY, yi);
24             }
25             int borderSize = Math.max(Math.abs(maxX-minX),Math.abs(maxY-minY));
26             int s = borderSize*borderSize;
27             System.out.println(s);
28         }
29         sc.close();
30     }
31 }

 

posted @ 2019-04-01 17:15  海米傻傻  阅读(366)  评论(0编辑  收藏  举报