最小矩形--全国模拟(二)

[编程题] 最小的矩形
时间限制:1秒
空间限制:32768K
牛牛在二维坐标系中画了N个点,且都是整点。现在牛牛想画出一个矩形,使得这N个点都在矩形内或者在矩形上。
矩形的边均平行于坐标轴。牛牛希望矩形的面积最小。请你帮助牛牛计算下最小矩形的面积。 
输入描述:
首先输入一个正整数N表示点的个数(2 <= N <= 50)
  接下来N行每行两个整数x, y,表示该点的坐标。绝对值均小于等于100.
 
 
输出描述:
一个整数表示最小矩形的面积。
 
输入例子:
2 0 1 1 0
 
输出例子:
1
 
解题思路:定义结构体Point存储每个点的坐标,然后遍历所有点,求出所有点中min_x、min_y、max_x、max_y,因此面积就为(max_x-min_x)*(max_y-min_y)
 1 #include <iostream>
 2 using namespace std;
 3 struct Point
 4 {
 5     int x;
 6     int y;
 7 };
 8 int getMin(int a,int b)
 9 {
10    return (b<a)?b:a;
11 }
12 int getMax(int a,int b)
13 {
14     return (b>a)?b:a;
15 }
16 int main()
17 {
18     int n;
19     while(cin>>n)
20     {
21         Point p[n];
22         int area;
23         for(int i=0;i<n;i++)
24         {
25             cin>>p[i].x>>p[i].y;
26         }
27         int min_x = p[0].x;
28         int max_x = p[0].x;
29         int min_y = p[0].y;
30         int max_y = p[0].y;
31  
32         for(int i=1;i<n;i++)
33         {
34             min_x = getMin(min_x,p[i].x);
35             min_y = getMin(min_y,p[i].y);
36             max_x = getMax(max_x,p[i].x);
37             max_y = getMax(max_y,p[i].y);
38  
39         }
40         area = (max_x - min_x)*(max_y-min_y);
41         cout<<area<<endl;
42     }
43     return 0;
44 }
原文地址:https://www.cnblogs.com/qqky/p/6991524.html