小标
2018-08-10
来源 :
阅读 3443
评论 0
摘要:本文主要向大家介绍了C/C++知识点之最小包围矩形,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之最小包围矩形,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
题目内容:
给定一组二维坐标,表示直角坐标系内的一个多边形的连续的顶点的坐标序列。计算能包围这个多边形的平行于坐标轴的最小矩形,输出它的左下角和右上角的坐标。
输入格式:
第一行是一个正整数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 }
本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!
喜欢 | 1
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号