您的位置:首页 > 其它

百度在线笔试题-裁减网格纸

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

[b]输入描述:[/b]
第一行一个数n(2≤n≤1000)表示点数,接下来每行一对整数xi,yi(-1e9<=xi,yi<=1e9)表示网格上的点


[b]输出描述:[/b]
一行输出最小面积


[b]输入例子:[/b]
2
0 0
0 3


[b]输出例子:[/b]
9


// Java版本
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
/*

2 0 0 0 3

*/
public static int min(int a[]){
int min=Integer.MAX_VALUE;
for(int i=0; i<a.length; i++){
if(a[i]<=min){
min=a[i];
}
}
return min;
}
public static int max(int a[]){
int max=Integer.MIN_VALUE;
for(int i=0; i<a.length; i++){
if(a[i]>=max){
max=a[i];
}
}
return max;
}

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
while(input.hasNext()){
int n=input.nextInt();
int x[]=new int
;
int y[]=new int
;
for(int i=0; i<n; i++){
x[i]=input.nextInt();
y[i]=input.nextInt();
}
int minx=min(x);
int maxx=max(x);
int miny=min(y);
int maxy=max(y);

int xlen=maxx-minx;
int ylen=maxy-miny;

if(ylen>xlen){
BigInteger bigInteger=new BigInteger(String.valueOf(ylen));
System.out.println(bigInteger.multiply(bigInteger));
}else{
BigInteger bigInteger=new BigInteger(String.valueOf(xlen));
System.out.println(bigInteger.multiply(bigInteger));

}

}
input.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: