- /*
- 2最小包围矩形(5分)
- 题目内容:
- 给定一组二维坐标,表示直角坐标系内的一个多边形的连续的顶点的坐标序列。计算能包围这个多边形的平行于坐标轴的最小矩形,输出它的左下角和右上角的坐标。
- 输入格式:
- 第一行是一个正整数n表示顶点的数量,第二行是n组整数,依次表示每个顶点坐标的x和y值。
- 输出格式:
- 四个整数,依次表示所计算的矩形的左下角的坐标的x、y值和右上角坐标的x、y值。
- 输入样例:
- 5
- 1 1 1 4 3 7 4 4 4 1
- 输出样例:
- 1 1 4 7
- */
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct point{
- int x;
- int y;
- }Point;
- int main(){
- int num;
- scanf("%d", &num);
- Point points[100];
- // Point *p = (Point *)malloc(sizeof(Point) * num);
- int i;
- for (i = 0; i< num; i++){
- scanf("%d %d", &points[i].x, &points[i].y);
- }
- int x_min, x_max, y_min, y_max;
- x_min = points[0].x, x_max = points[0].x;
- for (i = 0; i< num; i++){
- if (x_min > points[i].x){
- x_min = points[i].x;
- }
- }
- for (i = 0; i < num; i++){
- if (x_max < points[i].x){
- x_max = points[i].x;
- }
- }
- y_min = points[0].y, y_max = points[0].y;
- for (i = 0; i< num; i++){
- if (y_min > points[i].y){
- y_min = points[i].y;
- }
- }
- for (i = 0; i< num; i++){
- if (y_max < points[i].y){
- y_max = points[i].y;
- }
- }
- printf("%d %d %d %d\n", x_min, y_min, x_max, y_max);
- return 0;
- }
复制代码
感觉好不科学啊 malloc 这里怎么用? |
|