Rectangle Area

来源:互联网 发布:连接u8数据服务器失败 编辑:程序博客网 时间:2024/05/22 03:16

小学期末考试题啊。不过当要用程序写的时候,我还是费了点劲,因为题意弄错了。题目是求2个三角形覆盖的所有面积,不是求相交的面积。因此要分为不相交、相交两种情况。相交的话减去重叠部分即可,重叠部分的坐标画个图就可清晰找到规律。

如下:

int miniOfTwo(int a, int b) {    if (a >= b)        return b;    else        return a;}int maxOfTwo(int a, int b) {    if (a >= b)        return a;    else        return b;}int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {    int result = 0;    int xx = 0, yy = 0;    result = ((C - A) * (D - B) + (G - E) * (H - F));    if (E >= C || G <= A || F >= D || H <= B) //如果不相交        ;    else {        xx = miniOfTwo(C, G) - maxOfTwo(A, E);        yy = miniOfTwo(H, D) - maxOfTwo(B, F);        result -= xx * yy;    }        return result;}


0 0
原创粉丝点击