九度OJ1020-最小正方形-判大小
阿新 • • 發佈:2017-06-10
其中 測試用例 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);
這道題的原理不難,但是輸入輸出不是很好解決
下面是參考的代碼,很巧妙:
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-最小正方形-判大小