层叠消融

做为萌新一枚,这道题仍是须要巧解的----感谢某位大佬给予个人帮助
Submit[Web Board]
Description数组

n张矩形纸片叠在一块儿,偶数张叠加的区域会消去,奇数张叠加的区域会保留,求最后
保留的区域的总面积。矩形的边平行于坐标轴。

Input测试

多组输入,每组格式以下:
第一行1个整数n。
接下来n行,每行4个整数x1, y1, x2, y2。( x1, y1)为矩形左下顶点位置,( x2, 
y2)为矩形右上顶点位置。
数据范围:测试组数不超过10; 1<= n <= 100; -50 <= x1 < x2 <= 50; -50 <= 
y1 < y2 <= 50;

Outputcode

每组输出一行,一个整数,表示最后保留的区域的总面积。

Sample Inputip

2
-2 -1 2 1
-1 -2 1 2
3
1 1 6 3
2 1 4 5
3 2 5 4

Sample Outputstring

8
10

题目已经说出了个位数的大小范围,咱们要用一个填二维数组的方法来解决这道问题
即把矩形先平移100个单位(只要平移到正数便可)而后,在用一个二维数组模拟这个操做,最后将奇数个就每一个赋值为1,偶数个就变为0(前提初始化为0)it

ACcode
#include <stdio.h>
#include <string.h>
#include <math.h>
int a[210][210];
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int i,j,x1,y1,x2,y2;
        memset(a,0,sizeof(a));
        while(n--)
        {
            scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
            x1+=100;
            y1+=100;
            x2+=100;
            y2+=100;
            for(i=x1; i<x2; i++)
            {
                for(j=y1; j<y2; j++)
                {
                    if(a[i][j]==0)
                    {
                        a[i][j]=1;
                    }
                    else if(a[i][j]==1)
                    {
                        a[i][j]=0;
                    }
                }
            }
        }
        int sum=0;
        for(i=0; i<=200; i++)
        {
            for(j=0; j<=200; j++)
            {
                sum+=a[i][j];
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}

那么这样那道题就迎刃而解了,biu~~.io

相关文章
相关标签/搜索