- 题目描述:
-
给定一系列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
这是一道水题,但开始做错了,错误的代码如下1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <string> 5 #define MAX 202 6 7 int main(int argc, char const *argv[]) 8 { 9 int a, b; 10 11 scanf("%d %d",&a,&b); 12 while(a != 0 &&b != 0) { 13 int maxX, maxY, minX, minY; 14 maxX = minX = a; 15 maxY = minY = b; 16 while(a != 0 && b != 0) { 17 if(a > maxX) { 18 maxX = a; 19 } 20 if(a < minX) { 21 minX = a; 22 } 23 if(b > maxY) { 24 maxY = b; 25 } 26 if(b < minY) { 27 minY = b; 28 } 29 scanf("%d %d",&a,&b); 30 } 31 printf("%d %d %d %d ",minX,minY,maxX,maxY); 32 scanf("%d %d",&a,&b); 33 } 34 35 36 return 0; 37 }
原因在于第12行判断条件写错,修改后的代码为
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <string> 5 #define MAX 202 6 7 int main(int argc, char const *argv[]) 8 { 9 int a, b; 10 11 scanf("%d %d",&a,&b); 12 while(a != 0 || b != 0) { 13 int maxX, maxY, minX, minY; 14 maxX = minX = a; 15 maxY = minY = b; 16 while(a != 0 || b != 0) { 17 if(a > maxX) { 18 maxX = a; 19 } 20 if(a < minX) { 21 minX = a; 22 } 23 if(b > maxY) { 24 maxY = b; 25 } 26 if(b < minY) { 27 minY = b; 28 } 29 scanf("%d %d",&a,&b); 30 } 31 printf("%d %d %d %d ",minX,minY,maxX,maxY); 32 scanf("%d %d",&a,&b); 33 } 34 35 36 return 0; 37 }
这样子的判断以后要注意!!!!!!!!!!!!!!!!!