Foj 1888 三角形问题II

Accept: 44Submit: 74
Time Limit: 1000 mSecMemory Limit : 32768 KB

Problem Description

给定平面上的N 个点 的坐标,现在你的任务是统计任意3个点构成的三角形的面积和的值。

Input

有多组数据

数据的第一行包含一个正整数T 表示数据组数( 1 <= T <= 100) 接下来T 组数据

对于每组数据

第一行 包含 一个正整数 N 代表平面上点的个数 。 (1<= N <= 50,)

接下来N 行每行包含 2个 实数 Xi, Yi 代表第i个点的坐标 (0.00 <= Xi,Yi <= 100.00小数点后至多2位)

数据不保证不会出现坐标相同的点

Output

对于每组数据,首先输出”Case d: “,d为数据编号(从1开始).只输出一个实数,表示面积和的值。(输出小数点后 1位)

Sample Input

1
3
0 0
11
1 0

Sample Output

Case 1: 0.5

Hint

请使用double 代替float 以 避免精度问题.
没想到什么好的办法, 暴力的来,
#include<iostream> #include<cmath> using namespace std; struct Point { double x,y; }; int main() { int t,n,i,j,k,m,t1; Point p[51]; double s,tmp; while(scanf("%d",&t1)!=EOF) { for(i=1;i<=t1;i++) { scanf("%d",&n); m=0; s=0; for(j=0;j<n;j++) { scanf("%lf%lf",&p[m].x,&p[m].y); for(k=0;k<m;k++) { if(p[m].x==p[k].x&&p[m].y==p[k].y) m--; } m++; } for(j=0;j<m-2;j++) { for(k=j+1;k<m-1;k++) { for(t=k+1;t<m;t++) { tmp=(p[j].x*p[k].y-p[k].x*p[j].y + p[k].x*p[t].y-p[t].x*p[k].y + p[t].x*p[j].y-p[j].x*p[t].y)/2; s+=fabs(tmp); } } } printf("Case %d: %.1lf/n",i,s); } } return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值