層疊消融

做爲萌新一枚,這道題仍是須要巧解的----感謝某位大佬給予個人幫助
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

相關文章
相關標籤/搜索