1. 程式人生 > >九度OJ1020-最小正方形-判大小

九度OJ1020-最小正方形-判大小

其中 測試用例 ace ems 描述 pan 計算 iostream blog

題目1020:最小長方形

時間限制:1 秒

內存限制:32 兆

特殊判題:

提交:7410

解決:3521

題目描述:
給定一系列2維平面點的坐標(x, y),其中x和y均為整數,要求用一個最小的長方形框將所有點框在內。長方形框的邊分別平行於x和y坐標軸,點落在邊上也算是被框在內。
輸入:

測試輸入包含若幹測試用例,每個測試用例由一系列坐標組成,每對坐標占一行,其中|x|和|y|小於 231;一對0 坐標標誌著一個測試用例的結束。註意(0, 0)不作為任何一個測試用例裏面的點。一個沒有點的測試用例標誌著整個輸入的結束。

輸出:

對每個測試用例,在1行內輸出2對整數,其間用一個空格隔開。第1對整數是長方形框左下角的坐標,第2對整數是長方形框右上角的坐標。

樣例輸入:
12 56
23 56
13 10
0 0
12 34
0 0
0 0
樣例輸出:
12 10 23 56
12 34 12 34
來源:
2007年浙江大學計算機及軟件工程研究生機試真題
 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string>
 4 
 5 using namespace std;
 6 
 7 int main()  {
 8     int a, b, minx, miny, maxx, maxy;
 9     scanf("%d%d", &a, &b);
10 minx = maxx = a; miny = maxy = b; 11 bool ter = false; 12 while(scanf("%d%d", &a, &b)) { 13 if(a == 0 && b == 0 && ter == false) { 14 cout << minx << " " << miny << " "; 15 cout << maxx << " " << maxy << endl;
16 ter = true; 17 } 18 else if(a == 0 && b == 0 && ter == true) { 19 break; 20 } 21 else if(((a != 0 && b != 0) || (a == 0 && b != 0) || (a != 0 && b == 0) ) && ter == true) { 22 minx = maxx = a; miny = maxy = b; 23 ter = false; 24 } 25 else { 26 if(a < minx) minx = a; 27 if(a > maxx) maxx = a; 28 if(b < miny) miny = b; 29 if(b > maxy) maxy = b; 30 ter = false; 31 } 32 } 33 return 0; 34 35 }

這道題的原理不難,但是輸入輸出不是很好解決

下面是參考的代碼,很巧妙:

http://blog.csdn.net/ysc504/article/details/8281451

 1 //該題就是求這些點的坐標中的最大最小值
 2 #include <stdio.h>
 3 #include <string.h>
 4 int main ()
 5 {
 6     int x, y, minx, miny, maxx, maxy;
 7     while (~scanf ("%d%d", &x, &y), x||y) 
 8     {
 9         minx = x;
10         maxx = x;
11         miny = y;
12         maxy = y;
13         while (~scanf ("%d%d", &x, &y), x||y)
14         {
15             if(x < minx)
16                 minx = x;
17             if(x > maxx)
18                 maxx = x;
19             if(y < miny)
20                 miny = y;
21             if(y > maxy)
22                 maxy = y;
23         }
24         printf("%d %d %d %d\n", minx, miny, maxx, maxy);
25     }
26     return 0;
27 }

九度OJ1020-最小正方形-判大小