判断线段交点个数模板
#include<stdio.h>
#include<math.h>
#include<iostream>
using namespace std;
struct Line {
double x1,y1,x2,y2;
}node[11000];
bool xiangjiao(Line a,Line b){
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)
return false;
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)
return false;
return true;
}
int main(){
int n;
scanf("%d",&n);
for(int i = 0;i < n;i++)
scanf("%lf%lf%lf%lf",&node[i].x1,&node[i].y1,&node[i].x2,&node[i].y2);
int res = 0;
for(int i = 0;i < n;i++){
for(int j = i+1;j < n;j++){
if(xiangjiao(node[i],node[j]))
res++;
}
}
printf("%d\n",res);
return 0;
}