1 条题解
-
0
/* 思路分析 思路一 : 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
- 上传者