做为萌新一枚,这道题仍是须要巧解的----感谢某位大佬给予个人帮助
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