⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1086.cpp

📁 杭电 acm部分代码 有兴趣的可以下载 谢谢
💻 CPP
字号:
#include<iostream>
using namespace std;
double min(double a,double b){
    return a<b?a:b;
}
double max(double a,double b){
    return a>b?a:b;
}
double strait(double x1,double y1,double x2,double y2,double x3,double y3){
    return (x3-x1)*(y2-y1)-(x2-x1)*(y3-y1);
}
bool onornot(double x1,double y1,double x2,double y2,double x3,double y3){
    return x3>=min(x1,x2)&&x3<=max(x1,x2)&&y3>=min(y1,y2)&&y3<=max(y1,y2);
}
bool judge(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4){
   double a1=strait(x1,y1,x2,y2,x3,y3);
   double a2=strait(x1,y1,x2,y2,x4,y4);
   double b1=strait(x3,y3,x4,y4,x1,y1);
   double b2=strait(x3,y3,x4,y4,x2,y2);
    if(a1*a2<0&&b1*b2<0)
        return true;
    if(a1==0)
        return onornot(x1,y1,x2,y2,x3,y3);
    if(a2==0)
        return onornot(x1,y1,x2,y2,x4,y4);
    if(b1==0)
        return onornot(x3,y3,x4,y4,x1,y1);
    if(b2==0)
        return onornot(x3,y3,x4,y4,x2,y2);
    return false;
}
void main()
{
    int n,i,j,sum;
    double x1[100],y1[100],x2[100],y2[100];
    while(cin>>n,n){
        sum=0;
        for(i=0;i<n;i++)
            cin>>x1[i]>>y1[i]>>x2[i]>>y2[i];
        for(i=0;i<n-1;i++)
            for(j=i+1;j<n;j++)
                sum+=judge(x1[i],y1[i],x2[i],y2[i],x1[j],y1[j],x2[j],y2[j])?1:0;
        cout<<sum<<endl;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -