1 条题解

  • 0
    @ 2025-3-10 17:41:38
    /*
    思路分析
    思路一 : 
        1. 求两点之间的距离 l = sqrt(pow((x2 - x1) , 2) + pow((y2 - y1) , 2))
        2. 求点到线的距离 斜率k= (y2-y1)/(x2-x1) 截距b= y - kx (代入一个坐标进去)
            --- 距离d= | k * x3 - y3 + b | / sqrt(pow(k , 2) + 1)
        3. 底X高/2  s= l * d / 2;
    思路二: 
        1. 求出三条边的距离
        3. 利用海伦公式直接求出 s = sqrt(p*(p-a)*(p-b)*(p-c)) p = (a + b + c) / 2
    
    //思路一
    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        double x1,y1,x2,y2,x3,y3;
        cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
        double l,d,s,k,b;
        l = sqrt(pow((x2 - x1) , 2) + pow((y2 - y1) , 2));
        k = (y2-y1)/(x2-x1);
        b = y1 - k * x1;
        d = abs(k * x3 - y3 + b) / sqrt((pow(k , 2) + 1));
        s = l * d / 2;
        cout << fixed << setprecision(2) << s << endl;
        return 0;
    }
    
    
    //思路二
    
    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        double x1,y1,x2,y2,x3,y3;
        cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
        double l1,l2,l3,p,s;
        l1 = sqrt(pow((x2 - x1) , 2) + pow((y2 - y1) , 2));
        l2 = sqrt(pow((x3 - x1) , 2) + pow((y3 - y1) , 2));
        l3 = sqrt(pow((x2 - x3) , 2) + pow((y2 - y3) , 2));
        p = (l1 + l2 + l3) / 2;
        s = sqrt(p * (p - l1) * (p - l2) * (p - l3));
        cout << fixed << setprecision(2) << s << endl;
        return 0;
    }
    
    */
    
    • 1

    信息

    ID
    46
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    65
    已通过
    8
    上传者