1.00 1.00 3.00 3.00 2.00 2.00 4.00 4.00 5.00 5.00 13.00 13.00 4.00 4.00 12.50 12.50
1.00 56.25
一开始题目看不懂,后来看懂了题目,发现此题巨坑。题意就是给你四个点的坐标x1,y1,x2,y2,x3,y3,x4,y4。然后前两点坐标连线,变成一个矩阵的对角线。后两点一样。求的是矩阵相交的面积。代码如下。带解析。。
#include<stdio.h> double max(double a,double b) //求两者中大的 { return a>b?a:b; } double min(double c,double d) //求两者中小的 { return c<d?c:d; } void solve() { double x1,y1,x2,y2,x3,y3,x4,y4,t; while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF) { if(x1>x2) t=x1,x1=x2,x2=t;// 保证x2>x1。符合图中的情况。 if(y1>y2) t=y1,y1=y2,y2=t;//同上 if(x3>x4) t=x3,x3=x4,x4=t;//同上 if(y3>y4) t=y3,y3=y4,y4=t;//同上 double l=min(x2,x4)-max(x1,x3);// 求宽 double d=min(y2,y4)-max(y1,y3);// 求高。 double s=l*d; //求面积。 printf("%.2lf\n",max(x1,x3)>min(x2,x4)||max(y1,y3)>min(y2,y4)?0:s);//如果高或宽小于0解为0,即没有相交的部分,否则输出面积 } } int main() { solve();//问题解决。 return 0; }
原文地址:http://blog.csdn.net/sky_miange/article/details/42214023