博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1041-线段相交
阅读量:5164 次
发布时间:2019-06-13

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

描述:

判断给定线段L1,L2是否相交,其中L1表示为s1x,s1y,e1x,e1y,L2表示为s2x,s2y,e2x,e2y

输入:

多组数据输入,每组一行,每组八个浮点数,s1x,s1y,e1x,e1y,s2x,s2y,e2x,e2y

输出:

相交则输出yes否则输出no

样例输入:

0 1 2 1 1 0 1 2

1 1 2 2 3 3 4 4

样例输出:

yes

no

1 #include
2 using namespace std; 3 4 struct Point 5 { 6 double x; 7 double y; 8 }; 9 10 struct Segment11 {12 Point p;13 Point q;14 };15 16 struct Segment seg[3];17 18 bool IsCross(struct Segment segment1,struct Segment segment2)19 {20 Point d1,d2,d3;21 d1.x=segment2.q.x-segment1.p.x;22 d1.y=segment2.q.y-segment1.p.y;23 24 d2.x=segment2.p.x-segment1.p.x;25 d2.y=segment2.p.y-segment1.p.y;26 27 d3.x=segment1.q.x-segment1.p.x;28 d3.y=segment1.q.y-segment1.p.y;29 30 if((d1.x*d3.y-d1.y*d3.x)*(d3.x*d2.y-d3.y*d2.x)>0)31 return true;32 else 33 return false;34 }35 36 int main()37 {38 while(cin>>seg[1].p.x>>seg[1].p.y>>seg[1].q.x>>seg[1].q.y>>seg[2].p.x>>seg[2].p.y>>seg[2].q.x>>seg[2].q.y)39 {40 if(IsCross(seg[1],seg[2])&&IsCross(seg[2],seg[1]))41 cout<<"yes"<
View Code

 

转载于:https://www.cnblogs.com/Rosanna/p/3270489.html

你可能感兴趣的文章
我回答了90%的面试题,为什么还被拒?
查看>>
Html - Table 表头固定和 tbody 设置 height 在IE不起作用的解决
查看>>
iOS SVN终端指令
查看>>
Linux如何更新软件源
查看>>
NYOJ-289 苹果 又是一个典型的01背包和上题一样没啥好说的
查看>>
HDU 2262 回溯算法 递归枚举
查看>>
九度0J 1374 所有员工年龄排序
查看>>
listview初始化后仍为空
查看>>
无刷新分页
查看>>
SIFT算法
查看>>
git各种撤销操作
查看>>
每天努力一点之SQL
查看>>
UINavigationBar-使用总结
查看>>
夺命雷公狗jquery---11属性操作
查看>>
linux 常用命令
查看>>
display属性和属性值(18个属性值,常见面试题)
查看>>
微信小程序图片使用示例
查看>>
Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程
查看>>
CSS基本相关内容--中秋特别奉献
查看>>
GitHub 优秀的 Android 开源项目
查看>>