标签:des c style class blog code
Time Limit: 2000/1000 MS
(Java/Others) Memory Limit: 65536/32768 K
(Java/Others)
Total Submission(s): 6932 Accepted
Submission(s): 3350
简单数学几何,求n条线段共有几个交点。
1 //0MS 240K 1146 B C++ 2 #include<stdio.h> 3 #include<math.h> 4 struct node{ 5 double x1,y1; 6 double x2,y2; 7 }p[105]; 8 double Max(double a,double b) 9 { 10 return a>b?a:b; 11 } 12 double Min(double a,double b) 13 { 14 return a<b?a:b; 15 } 16 int judge_in(node a,double x,double y) 17 { 18 if(x>=Min(a.x1,a.x2)&&x<=Max(a.x1,a.x2)&&y>=Min(a.y1,a.y2)&&y<=Max(a.y1,a.y2)) 19 return 1; 20 return 0; 21 } 22 int judge(node a,node b) 23 { 24 double k1,k2,b1,b2; 25 if(a.x1==a.x2) k1=0; 26 else k1=(a.y2-a.y1)/(a.x2-a.x1); 27 if(b.x1==b.x2) k2=0; 28 else k2=(b.y2-b.y1)/(b.x2-b.x1); 29 if(k1==k2) return 0; 30 31 b1=a.y1-k1*a.x1; 32 b2=b.y1-k2*b.x1; 33 34 double x,y; 35 x=(b2-b1)/(k1-k2); 36 y=k1*x+b1; 37 38 if(judge_in(a,x,y) && judge_in(b,x,y)) return 1; 39 return 0; 40 } 41 int main(void) 42 { 43 int n; 44 while(scanf("%d",&n)!=EOF && n) 45 { 46 for(int i=0;i<n;i++) 47 scanf("%lf%lf%lf%lf",&p[i].x1,&p[i].y1,&p[i].x2,&p[i].y2); 48 int cnt=0; 49 for(int i=0;i<n;i++) 50 for(int j=i+1;j<n;j++) 51 cnt+=judge(p[i],p[j]); 52 printf("%d\n",cnt); 53 } 54 return 0; 55 }
hdu 1086 You can Solve a Geometry Problem too (几何),布布扣,bubuko.com
hdu 1086 You can Solve a Geometry Problem too (几何)
标签:des c style class blog code
原文地址:http://www.cnblogs.com/GO-NO-1/p/3764121.html