求最小正方形的面积

 1 package test1;
 2 
 3 import java.util.Scanner;
 4 import java.util.TreeMap;
 5 
 6 public class baidu1 {
 7 
 8     /*
 9      * 利用实现Comparable接口对每个节点按照 x,y排序,找到最大差值,计算面积
10      * */
11     public static TreeMap<Address,Bit> map = new TreeMap<Address,Bit>();
12     public static int calculateArea(int n, Bit [] mAdds){
13         
14         //按照x排序
15         for (int i=0;i<mAdds.length;i++){
16             map.put(new Address(mAdds[i].x),mAdds[i]);
17         }
18         int mX = Math.abs(map.lastEntry().getValue().x - map.firstEntry().getValue().x);
19         
20         //按照y排序
21         for (int i=0;i<mAdds.length;i++){
22             map.put(new Address(mAdds[i].y),mAdds[i]);
23         }
24         int mY = Math.abs(map.lastEntry().getValue().y - map.firstEntry().getValue().y);
25         
26         if (mX > mY){
27             return mX * mX;
28         } else {
29             return mY * mY;
30         }
31     }
32     
33     public static void main(String[] args) {
34 
35         System.out.println("请输入节点总数n,以及相应节点的坐标");
36         Scanner scan = new Scanner(System.in);
37         int n = scan.nextInt();
38         int count = 0;
39         Bit[] mBit = new Bit[n];
40 
41         while (count < n) {
42 
43             int x = scan.nextInt();
44             int y = scan.nextInt();
45             System.out.println("x:" + x + " y:" + y + " n:" + n);
46             Bit mBit1 = new Bit(x, y);
47             mBit[count] = mBit1;
48             count++;
49         }
50         int area = calculateArea(n, mBit);
51 
52         System.out.println("正方形的最小面积:"+area);
53     }
54 }
55 
56 
57 class Address implements Comparable<Object>{
58     
59     private int mValue ;
60     
61     public Address(int mValue) {
62         super();
63         this.mValue = mValue;
64     }
65 
66     @Override
67     public int compareTo(Object o) {
68         
69         Address m = (Address)o;
70         if ((this.mValue - m.mValue) == 0){
71             return -1;
72         } else {
73             return (this.mValue - m.mValue);
74         }
75     }
76 }
77 
78 class Bit{
79     
80     public int x;
81     public int y;
82     public Bit(int x, int y) {
83         super();
84         this.x = x;
85         this.y = y;
86     }
87 }
请输入节点总数n,以及相应节点的坐标
3 0 0 0 3 3 4
x:0 y:0 n:3
x:0 y:3 n:3
x:3 y:4 n:3
正方形的最小面积:16

 

posted on 2015-09-17 22:19  TGomving  阅读(321)  评论(0编辑  收藏  举报