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