最小包围矩形

匿名 (未验证) 提交于 2019-12-03 00:41:02

题目内容:

给定一组二维坐标,表示直角坐标系内的一个多边形的连续的顶点的坐标序列。计算能包围这个多边形的平行于坐标轴的最小矩形,输出它的左下角和右上角的坐标。

输入格式:

第一行是一个正整数n表示顶点的数量,第二行是n组整数,依次表示每个顶点坐标的x和y值。

输出格式:

四个整数,依次表示所计算的矩形的左下角的坐标的x、y值和右上角坐标的x、y值。输出最后带有回车换行。

输入样例:

5

1 1 1 4 3 7 4 4 4 1

输出样例:

1 1 4 7

 1 #include <stdio.h>  2   3 typedef struct _dot {  4     int x;  5     int y;  6 } Dot;  7   8 int main(int argc, char const *argv[])  9 { 10     Dot left_down, right_up; 11     left_down = right_up = (Dot){0,0}; 12  13     Dot p; 14     int n; 15     scanf("%d", &n); 16  17     for ( int i = 0; i < n; i++ ) { 18         scanf("%d %d", &p.x, &p.y); 19         if ( left_down.x || left_down.y || right_up.x  || right_up.y ) {     20             if ( p.x < left_down.x ) { 21                 left_down.x = p.x; 22             } else if ( p.x > right_up.x ) { 23                 right_up.x = p.x; 24             } 25             if ( p.y < left_down.y ) { 26                 left_down.y = p.y; 27             } else if ( p.y > right_up.y ) { 28                 right_up.y = p.y; 29             } 30         } else { 31             left_down = p; 32             right_up = p; 33         } 34     } 35     printf("%d %d %d %d\n", left_down.x, left_down.y, right_up.x, right_up.y); 36     return 0; 37 }

原文:https://www.cnblogs.com/wangtiaoke/p/9308545.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!