博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-You can Solve a Geometry Problem too
阅读量:4286 次
发布时间:2019-05-27

本文共 1582 字,大约阅读时间需要 5 分钟。

     

题意:判断两两直线相交的个数

code:

#include
#include
#include
#include
#include
using namespace std;//点struct POINT{ double x, y; POINT(){ } POINT(double a, double b){ x = a; y = b; }}p[105];//线段struct Seg{ POINT a, b; Seg() { } Seg(POINT x, POINT y){ a = x; b = y; }};//叉乘double cross(POINT o, POINT a, POINT b){ return (a.x - o.x) * (b.y - o.y) - (b.x - o.x) * (a.y - o.y);}//判断点在线段上bool On_Seg(POINT a, Seg s){ double maxx = max(s.a.x, s.b.x), minx = min(s.a.x, s.b.x); double maxy = max(s.a.y, s.b.y), miny = min(s.a.y, s.b.y); if(a.x >= minx && a.x <= maxx && a.y >= miny && a.y <= maxy) return true; return false;}//判断线段相交bool Seg_cross(Seg s1, Seg s2){ double cs1 = cross(s1.a, s2.a, s2.b); double cs2 = cross(s1.b, s2.a, s2.b); double cs3 = cross(s2.a, s1.a, s1.b); double cs4 = cross(s2.b, s1.a, s1.b); // 互相跨立 if(cs1 * cs2 < 0 && cs3 * cs4 < 0) return true; if(cs1 == 0 && On_Seg(s1.a, s2)) return true; if(cs2 == 0 && On_Seg(s1.b, s2)) return true; if(cs3 == 0 && On_Seg(s2.a, s1)) return true; if(cs4 == 0 && On_Seg(s2.b, s1)) return true; return false;}int main(){ int n; while(cin >> n, n){ Seg p[105]; for(int i = 0;i < n;i++) cin >> p[i].a.x >> p[i].a.y >> p[i].b.x >> p[i].b.y; int cnt = 0; for(int i = 0;i < n;i++) { for(int j = i+1;j < n;j++) { if(Seg_cross(p[i],p[j])) cnt ++; } } cout << cnt << endl; }}

转载地址:http://lcsgi.baihongyu.com/

你可能感兴趣的文章
社区发现的3个评估指标:标准化互信息NMI,ARI指标,以及模块度(modularity)
查看>>
机器学习算法与Python实践之(六)二分k均值聚类
查看>>
逻辑回归 和 朴素贝叶斯 两者间的区别
查看>>
模块度与Louvain社区发现算法
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
机器学习降维算法四:Laplacian Eigenmaps 拉普拉斯特征映射
查看>>
机器学习降维算法一:PCA(主成分分析算法)
查看>>
非常见降维方法:Laplacian Eigenmaps 拉普拉斯特征映射
查看>>
NMF 非负矩阵分解(Non-negative Matrix Factorization)实践
查看>>
谱聚类(spectral clustering)原理总结
查看>>
CPM(Cluster Percolation method)派系过滤算法
查看>>
多目标进化算法(MOEAs)概述
查看>>
AdaBoost与随机森林区别
查看>>
坐标下降法(Coordinate descent)
查看>>
Matlab plot画图 坐标字体、字号、范围、间隔等的设置
查看>>
LATEX调整公式、图片与正文间距离,文字间距离,调整空白大小
查看>>
eps格式图像空白边缘裁剪
查看>>
稀疏问题的学习
查看>>
机器学习(6) MovieLens数据集
查看>>
matlab读取UCI中获取的.data文件
查看>>