两个rectangles的联合。编写一个程序来找到包含2个给定矩形的最小可能矩形

时间:2015-07-15 15:26:23

标签: c

给定左下角(x,y)的坐标,2个矩形的长度(l)和宽度(w),编写程序以找到包含2个给定矩形的最小可能矩形。

输入和输出格式:

输入的第一行由4个整数组成,这些整数由对应于第一个矩形的x,y,l和w的空格分隔。

输入的第二行由4个整数组成,这些整数由对应于第二个矩形的x,y,l和w的空格分隔。

输出由4个整数组成,这些整数对应于Union矩形的x,y,l和w。

示例输入:

3 8 1515

2 6 10 10

示例输出:

2 6 16 17

我无法弄清楚逻辑......我不是要求整个程序,只是想要逻辑部分的帮助......

更新: 这是我的程序现在正在运行...谢谢大家的帮助:))

#include<stdio.h>
int main() {
  int x1, x2, y1, y2, l1, l2, w1, w2, xmax, xmin, ymax, ymin;
  scanf(“%d %d %d %d\n”,&x1,&y1,&l1,&w1);
  scanf(“%d %d %d %d\n”,&x2,&y2,&l2,&w2);
  xmin = x1 < x2 ? x1 : x2;
  ymin = y1 < y2 ? y1 : y2;
  int b = x1 + l1;
  int c = x2 + l2;
  xmax = b > c ? b : c;
  int d = y1 + w1;
  int e = y2 + w2;
  ymax = d > e ? d : e;
  int l = xmax - xmin;
  int w = ymax - ymin;
  printf(“%d %d %d %d”,xmin,ymin,l,w);
  return 0;
}

无法弄清楚程序中的问题.. :(

2 个答案:

答案 0 :(得分:2)

考虑到左下角的位置,长度和宽度,您可以确定其他三个点。对两个矩形都这样做。例如,给定x1y1l1w1p1 = (x1,y1)p2 = (x1,y1+l1)p3 = (x1+w1,y1),{{1} }。

现在看看你得到的八个点,找到最小的X(minX)和最小的Y(minY),以及最大的X(maxX)和最大的Y(maxY)。请注意,这些值中没有一个必然来自同一点。

您的结果现在是p4 = (x1+w1,y1+l1)minXminYmaxY - minY

答案 1 :(得分:2)

1)找到Xmin = X1和X2的最小值。

2)找到Ymin = Y1和Y2的最小值。

3)找到Xmax =(X1 + L1)和(X2 + L2)的最大值

4)找到Ymax =(Y1 + W1)和(Y2 + w2)的最大值

5)查找长度= Xmax和Xmin之间的差异

6)找到宽度= Ymax和Ymin之间的差异

7)最终结果是(Xmin,Ymin,长度,宽度)