最开始一直在用数学方法计算所有矩形面积和然后减去重叠部分,然而对于n较多且复杂多重合的情况易出错,用了很长时间在想各种重叠类型,最后还不如老老实实遍历标记呢QAQ
简图和AC代码附上:
技巧点在:每个小方块标记左下角顶点和for循环标记的坐标范围
#include<stdio.h>
int main()
{
int n,i,j,k;
int sum=0;
int a[100][100]={0};
int x1,x2,y1,y2;
scanf("%d",&n);
for(k=0;k<n;k++)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
for(i=x1;i<x2;i++)
for(j=y1;j<y2;j++)
if(!a[i][j])
{
a[i][j]=1;
sum++;
}
}
printf("%d",sum);
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-34252.html