尽量用简单一点,通俗易懂的来解答 ,我小趴菜不会啊,谢谢大家!
左边和左边比,选更大的; 右边和右边比,选更小的。 然后两者比较大小,右边更大则有重叠区,相减就是长度
#include <stdio.h>
int getmax(int x1,int x2)
{
if(x1>x2)
return x1;
return x2;
}
int getmin(int x1,int x2)
{
if(x1>x2)
return x2;
return x1;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int x1,y1,x2,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
int x3,y3,x4,y4;
scanf("%d%d%d%d",&x3,&y3,&x4,&y4);
int xa = getmax(x1,x3);
int ya = getmax(y1,y3);
int xb = getmin(x2,x4);
int yb = getmin(y2,y4);
if(yb > ya && xb > xa)
printf("%d\n",(yb-ya)*(xb-xa));
else
printf("0\n");
}
return 0;
}
class Solution {
public:
bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) {
int x1 = rec1[0];
int y1 = rec1[1];
int x2 = rec1[2];
int y2 = rec1[3];
int x3 = rec2[0];
int y3 = rec2[1];
int x4 = rec2[2];
int y4 = rec2[3];
int llx,lly,rsx,rsy;
//llx: Left Larger X
//lly: Left Larger Y
//rsx: Right Smaller X
//rsy: Right Smaller Y
llx = x1 >= x3 ? x1 : x3;
lly = y1 >= y3 ? y1 : y3;
rsx = x2 < x4 ? x2 :x4;
rsy = y2 < y4 ? y2 : y4;
if(llx < rsx && lly < rsy) return true;
else return false;
}
};
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!