二维数组空间覆盖,注意临界点和起始点。
#include <stdio.h>
int main()
{
long j,i,a[101][101]={0},x[5],y[5],s1=0,s2=0,s3=0;
for(i=1;i<=4;i++)scanf("%ld%ld",&x[i],&y[i]);
for(i=x[1];i<x[2];i++)
for(j=y[1];j<y[2];j++)
a[i][j]=1;
for(i=x[3];i<x[4];i++)
for(j=y[3];j<y[4];j++)
{
if(a[i][j]==1)a[i][j]=3;
else a[i][j]=1;
}
for(i=0;i<=100;i++)
for(j=0;j<=100;j++)
{
if (a[i][j]==3)s1++;
else if(a[i][j]==1)s2++;
}
printf("%ld %ld %ld\n",s1,s2,10000-s1-s2);
return 0;
}