最小长方形

来源:互联网 发布:360软件修补漏洞 编辑:程序博客网 时间:2024/06/10 14:49
//给定一系列2维平面点的坐标(x, y),其中x和y均为整数,//要求用一个最小的长方形框将所有点框在内。//长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内。//对每个测试用例,在1行内输出2对整数,其间用一个空格隔开。//第1对整数是长方形框左下角的坐标,第2对整数是长方形框右上角的坐标。//如果只是一个点或者一条线,不输出。例如://12 34//0 0//只是一个点,不是长方形,不输出。//样例输入://12 56//23 56//13 10//0 0//12 34//0 0//0 0//样例输出://12 10 23 56#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){vector<int>v1, v2;//分别存放x值和y值bool stopAllTest = false;//标志整个输入的结束while (stopAllTest == false){bool isFirst = true;int x, y; //表示一个test里面的第一个数据while (cin >> x >> y){if (isFirst){if (x == 0 && y == 0)//test里面的第一个数据为0 0,则结束{stopAllTest = true; //整个输入结束break;}else{v1.push_back(x);v2.push_back(y);isFirst = false;}}else//isFirst==false{if (x == 0 && y == 0)//当前这个test遇到0,0,结束当前的test{break;}else{v1.push_back(x);v2.push_back(y);}};}//第二个while结束if (v1.size() >= 2)//大于=2排除了是一个点{//取出最小的x y和最大的x y输出即可sort(v1.begin(), v1.end());sort(v2.begin(), v2.end());int n = v1.size();//v1和v2大小一样//最小最大x不等,最小最大y不等,排除了是直线if (v1[0] != v1[n - 1] && v2[0] != v2[n - 1])cout << v1[0] << " " << v2[0] << " " << v1[n - 1] << " " << v2[n - 1] << endl;}v1.clear();v2.clear();}//第一个while结束return 0;}

0 0
原创粉丝点击