本文主要是介绍FZU 1888三角形问题II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:给定平面上的N 个点的坐标,现在你的任务是统计任意3个点构成的三角形的面积和的值。枚举就能过了
用到了海伦公式:
假设在平面内,有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得:
而公式里的p为半周长(周长的一半):
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const int MAXN = 60;double x[MAXN],y[MAXN];int main(){int t,n,cas=1;scanf("%d",&t);while (t--){scanf("%d",&n);for (int i = 0; i < n; i++)cin >> x[i] >> y[i];double sum = 0.0;for (int i = 0; i < n; i++)for (int j = i+1; j < n; j++)for (int k = j+1; k < n; k++){double a = sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));double b = sqrt((x[i]-x[k])*(x[i]-x[k])+(y[i]-y[k])*(y[i]-y[k]));double c = sqrt((x[j]-x[k])*(x[j]-x[k])+(y[j]-y[k])*(y[j]-y[k]));double p = 1.0*(a+b+c)/2;sum += sqrt(p*(p-a)*(p-b)*(p-c)); }printf("Case %d: %.1lf\n",cas++,sum);}return 0;
}
这篇关于FZU 1888三角形问题II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!