A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. 2最小包围矩形(5分)
  3. 题目内容:
  4. 给定一组二维坐标,表示直角坐标系内的一个多边形的连续的顶点的坐标序列。计算能包围这个多边形的平行于坐标轴的最小矩形,输出它的左下角和右上角的坐标。

  5. 输入格式:
  6. 第一行是一个正整数n表示顶点的数量,第二行是n组整数,依次表示每个顶点坐标的x和y值。

  7. 输出格式:
  8. 四个整数,依次表示所计算的矩形的左下角的坐标的x、y值和右上角坐标的x、y值。

  9. 输入样例:
  10. 5
  11. 1 1 1 4 3 7 4 4 4 1

  12. 输出样例:
  13. 1 1 4 7
  14. */
  15. #include<stdio.h>
  16. #include<stdlib.h>
  17. typedef struct point{
  18.         int x;
  19.         int y;
  20. }Point;


  21. int main(){
  22.         int num;
  23.         scanf("%d", &num);
  24.         Point points[100];
  25. //        Point *p = (Point *)malloc(sizeof(Point) * num);
  26.         int i;
  27.         for (i = 0; i< num; i++){
  28.                 scanf("%d %d", &points[i].x, &points[i].y);
  29.         }
  30.         int x_min, x_max, y_min, y_max;
  31.         x_min = points[0].x, x_max = points[0].x;
  32.         for (i = 0; i< num; i++){
  33.                 if (x_min > points[i].x){
  34.                         x_min = points[i].x;
  35.                 }
  36.         }
  37.         for (i = 0; i < num; i++){
  38.                 if (x_max < points[i].x){
  39.                         x_max = points[i].x;
  40.                 }
  41.         }
  42.         y_min = points[0].y, y_max = points[0].y;
  43.         for (i = 0; i< num; i++){
  44.                 if (y_min > points[i].y){
  45.                         y_min = points[i].y;
  46.                 }
  47.         }
  48.         for (i = 0; i< num; i++){
  49.                 if (y_max < points[i].y){
  50.                         y_max = points[i].y;
  51.                 }
  52.         }
  53.         printf("%d %d %d %d\n", x_min, y_min, x_max, y_max);
  54.         return 0;
  55. }
复制代码


感觉好不科学啊 malloc 这里怎么用?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马