标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8452 Accepted Submission(s):
4125
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <stack> 5 #include <queue> 6 #include <map> 7 #include <set> 8 #include <vector> 9 #include <math.h> 10 #include <algorithm> 11 using namespace std; 12 const double pi = acos(-1.0); 13 const int INF = 0x3f3f3f3f; 14 15 struct Line 16 { 17 double x1,y1,x2,y2; 18 }node[105]; 19 20 bool solve(Line a, Line b)//叉积判断两线段是否相交 21 { 22 if (((a.x1-b.x1)*(a.y2-b.y1)-(a.x2-b.x1)*(a.y1-b.y1))*((a.x1-b.x2)*(a.y2-b.y2)-(a.x2-b.x2)*(a.y1-b.y2))>0) 23 return false; 24 if (((b.x1-a.x1)*(b.y2-a.y1)-(b.x2-a.x1)*(b.y1-a.y1))*((b.x1-a.x2)*(b.y2-a.y2)-(b.x2-a.x2)*(b.y1-a.y2))>0) 25 return false; 26 return true; 27 } 28 29 int main () 30 { 31 int n; 32 while (scanf ("%d",&n),n) 33 { 34 for (int i=0; i<n; i++) 35 scanf ("%lf%lf%lf%lf",&node[i].x1,&node[i].y1,&node[i].x2,&node[i].y2); 36 int cnt = 0; 37 for (int i=0; i<n; i++) 38 { 39 for (int j=i+1; j<n; j++) 40 { 41 if (solve(node[i], node[j])) 42 cnt++; 43 } 44 } 45 printf ("%d\n",cnt); 46 } 47 return 0; 48 }
标签:
原文地址:http://www.cnblogs.com/dxd-success/p/4507898.html