模拟题!不会,求解答

img

尽量用简单一点,通俗易懂的来解答 ,我小趴菜不会啊,谢谢大家!

img

左边和左边比,选更大的; 右边和右边比,选更小的。 然后两者比较大小,右边更大则有重叠区,相减就是长度

#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;   
    }
};
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632