• 两条线段 马蹄集


    两条线段
    难度:白银
    0时间限制:1秒
    巴占用内存:64M
    输入2个线段的端点的坐标值和y(X,y不重合),判断两条线段是否交叉,输出
    YES或者NO.
    格式
    输入格式:输入整型,空格分隔。按照先起点(Xy),空格,再终点
    (Xy)的次序。每行一个线段的信息。
    输出格式:输出YES或者NO 

    1. //
    2. // Created by abner on 2022/11/5.
    3. //
    4. #include>
    5. using namespace std;
    6. bool inside(int x1,int y1,int x2,int y2,int xk,int yk)
    7. {
    8. return (x1 == x2 || (min(x1,x2) <= xk && xk <= max(x1,x2)))&& (y1 == y2 || (min(y1,y2) <= yk && yk <= max(y1,y2)));
    9. //(y1 ==y2(min(y1,y2)<=yk &yk
    10. //}
    11. }
    12. //bool inside(int x1,int y1,int x2,int y2,int xk,int yk)
    13. //return (x1 =x2 (min(x1,x2)<=xk &xk
    14. //(y1 ==y2(min(y1,y2)<=yk &yk
    15. //}
    16. int main()
    17. {
    18. char c;
    19. int x1,y1,x2,y2,x3,y3,x4,y4;
    20. bool check=false;
    21. cin>>c>>x1>>c>>y1>>c>>c>>x2>>c>>y2>>c;
    22. cin>>c>>x3>>c>>y3>>c>>c>>x4>>c>>y4>>c;
    23. if((y4-y3)*(x2-x1) == (y2-y1)*(x4-x3))//判断线段12与线段34是否平行
    24. {//若平行,则判断线段12与线段13是否共线
    25. if((y2-y1)*(x3-x1) == (y3-y1)*(x2-x1))
    26. {
    27. if (inside(x1,y1,x2,y2,x3,y3))check=true;
    28. //判断(x4,y4)是否在「线段」(x1,y1)~(x2,y2)上
    29. if (inside(x1,y1,x2,y2,x4,y4))check=true;
    30. //判断(x1,y1)是否在「线段(x3,y3)~(x4,y4)上
    31. if (inside(x3,y3,x4,y4,x1,y1))check=true;
    32. //判断(x2,y2)是否在「线段」(x3,y3)~(x4,y4)上
    33. if (inside(x3,y3,x4,y4,x2,y2))check=true;
    34. //在平行时,
    35. }}
    36. else//不平行
    37. {
    38. //联立方程得到t1和t2的值
    39. double t1 = (double)(x3 * (y4 - y3)+y1 * (x4-x3)-y3 * (x4 -x3)-x1 * (y4 -y3)) / ((x2 - x1) * (y4 - y3) - (x4-x3) * (y2 - y1));
    40. double t2 = (double)(x1 * (y2- y1) + y3 * (x2 - x1) - y1 * (x2 - x1)-x3 * (y2 - y1)) / ((x4 - x3) * (y2 -y1) -(x2- x1) * (y4 - y3));
    41. //判断t1和t2是否均在[0,1]之间
    42. if(t1>=0.0 && t1<=1.0 && t2>=0.0 && t2<=1.0) check=true;
    43. }
    44. if(check) cout<<"YES";
    45. else cout<<"NO";
    46. return 0;}

    一、常用的方法有两种,如下:

    1、度量比较法。

    量得两条线段的长度,比较大小

    2、叠合比较法。

    将两条线段重叠在一起,两条线段的一个端点重合,另一个端点落在另一条线段内的线段较短。 

    二、长度的测量

    长度的测量是最基本的测量,最常用的工具是刻度尺。

    长度的国际单位是米(m),常用的单位有千米(km),分米(dm),厘米(cm),毫米(mm)微米(μm)纳米(nm)等。

    长度的单位换算时,小单位变大单位用乘法,大单位换小单位用除法。

    方法一:使用度量工具量出这两条线段的长度,度量单位相同,所得量数大的线段较长。
    方法二:叠合法比较,两条线段的一个端点重合,另一个端点落在此端点的同一侧,看另一端点的位置.
    方法三:使用圆规。

  • 相关阅读:
    Go -- 方法、和指针
    计算机的进制转换
    哈夫曼树的创建(代码实现) [Java]
    如何在自己电脑上配置开发深度学习项目(windows)
    Flutter稳定支持Windows,开发者做好准备了吗?
    ARM核心时间线
    计算机毕业设计Java爱家家政公司网站(源码+系统+mysql数据库+lw文档)
    OpenAI 创始人奥特曼:做你自己喜欢的事情
    前后端分离项目-基于springboot+vue的图书馆管理系统的设计与实现(内含代码+文档+报告)
    python【模块】xml.etree.ElementTree 解析 xml
  • 原文地址:https://blog.csdn.net/m0_62574889/article/details/127702324