poj 1151

其实可以暴力解决

#include<stdio.h>

#include<stdlib.h>

#include<string.h>



typedef struct

{

    double x1;

    double y1;

    double x2;

    double y2;

}Point;



Pointsquare[110];

double x[220],y[220];

int num;

int comp(const void *a,const void *b);





int main()

{

    int n,i,j,k,ex=0;

    double x1,y1,x2,y2,sum;

    while(scanf("%d",&n),n!=0)

    {

        ex++;

        num=0;

        sum=0.;

        for(i=0;i<n;i++)

        {

            scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);

            square[i].x1=x1;

            square[i].y1=y1;

            square[i].x2=x2;

            square[i].y2=y2;

            x[num]=x1;

            y[num++]=y1;

            x[num]=x2;

            y[num++]=y2;



        }

        qsort(x,n*2,sizeof(double),comp);

        qsort(y,n*2,sizeof(double),comp);

        for(i=0;i<2*n-1;i++)

        for(j=0;j<2*n-1;j++)

        {

            for(k=0;k<n;k++)

            {

                if(x[i]>=square[k].x1&&y[j]>=square[k].y1&&x[i+1]<=square[k].x2&&y[j+1]<=square[k].y2)

                {

                    sum+=(x[i+1]-x[i])*(y[j+1]-y[j]);

                    break;

                }

            }

        }

        printf("Test case #%d\n",ex);

       printf("Total explored area: %.2lf\n\n",sum);

    }

    return 0;

}

你可能感兴趣的:(poj)