南邮 OJ 1041 线段相交
来源:互联网 发布:电器价格标签打印软件 编辑:程序博客网 时间:2024/05/22 16:52
线段相交
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 476 测试通过 : 106
总提交 : 476 测试通过 : 106
比赛描述
你将判断给定线段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
题目来源
NUAA
#include <iostream>using namespace std;bool crossed(double &x1,double &y1,double &x2,double &y2, double &x3,double &y3,double &x4,double &y4){double X, Y;//两直线的交点if(x1==x2 && x3==x4){//L1、L2都垂直于x轴return 0;}else if(x1==x2){//仅仅L1垂直于x轴Y = y3+(y4-y3)/(x4-x3)*(x1-x3);//两直线交点纵坐标if( (x3-x1)*(x4-x1)<=0 && (Y-y1)*(Y-y2)<=0 ){return 1;}else{return 0;}}else if(x3==x4){//仅仅L2垂直于x轴Y = y1+(y2-y1)/(x2-x1)*(x3-x1);//两直线交点纵坐标if( (x1-x3)*(x2-x3)<=0 && (Y-y3)*(Y-y4)<=0 ){return 1;}else{return 0;}}else{//L1、L2都不垂直与x轴//L1: y = ax + b //L2: y = mx + n double a, b, m, n;a = (y1 - y2) / (x1 - x2);b = y1 - a * x1;m = (y3 - y4) / (x3 - x4);n = y3 - m * x3;if(a == m)//两直线平行return false;X = (n-b)/(a-m);Y = a * X + b;if( (X-x1)*(X-x2)<=0 &&(Y-y1)*(Y-y2)<=0 && (X-x3)*(X-x4)<=0 && (Y-y3)*(Y-y4)<=0 )return 1;elsereturn 0;}}int main(){double x1,y1,x2,y2,x3,y3,x4,y4;while(cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4){if(crossed(x1,y1,x2,y2,x3,y3,x4,y4))cout<<"yes"<<endl;elsecout<<"no"<<endl;}}
0 0
- 南邮 OJ 1041 线段相交
- Hust oj 1559 线段相交(叉积)
- 1041线段相交
- 哈理工OJ 1579 又见线段相交【计算几何】
- 哈理工OJ 1559 线段相交(计算几何)
- 51nod oj 1264 线段相交【数学几何】
- Hust oj 1104 Leyni, LOLI and Line(线段相交)
- 线段相交
- 线段相交
- 线段相交
- 线段相交
- 线段相交
- 线段相交
- 南邮 OJ 1269 区间相交问题
- 线段相交 直线相交 模板
- 南邮 OJ 1407 线段覆盖
- 判断线段相交
- 判断线段相交程序
- javax.mail实现邮件发送
- 通达OA 2013增强版和2015版里列表控件的差别
- POJ 1236:Network of Schools
- HDU 4359 Easy Tree DP?(是dp但并不是tree dp + 组合计数)
- 代码实现HDFS数据上传和下载
- 南邮 OJ 1041 线段相交
- codejam 2008 APAC local onsites C 概率dp
- 架构、框架、模式、模块、组件、插件、控件、中间件的含义和区别
- Android:OTG+MediaScanner
- Mysql与Oracle区别
- Cell复用保留改变状态
- C++类访问控制--public,protected,private的使用(未完)
- 112.Path Sum (数的路径为N)
- redis配置文件详解配置文件redis.conf