1、我特别无语,因为忘记删除freopen,白白WA一次……下次一定要用ifdef!
2、题目中给出了面积的计算公式,点在三角形内当且仅当三个小三角形的面积等于一个大三角形的面积。
3、至此,第五章结束。
#include <stdio.h>
#include <math.h>double area(double x0,double y0,double x1,double y1,double x2,double y2)
{
return 0.5*(x0*y1+x2*y0+x1*y2-x2*y1-x0*y2-x1*y0);
}
int main(void)
{
int n,i,j,k,h,a[20][2],answer[500][3]={0},p,maxi,flag;
double max,ans[500]={0.0},area1,area2,area3,area4;
char ch;
while(scanf("%d",&n)==1)
{
if(n==0) break;
p=0;max=0.0;
for(i=0;i<n;i++)
{
getchar();
scanf("%c%d%d",&ch,&a[i][0],&a[i][1]);
}
for(i=0;i<n-2;i++)
for(j=i+1;j<n-1;j++)
for(k=j+1;k<n;k++)
{
flag=1;
for(h=0;h<n;h++)
{
if(h==i||h==j||h==k) continue;
area1=fabs(area(a[i][0],a[i][1],a[j][0],a[j][1],a[k][0],a[k][1]));
area2=fabs(area(a[h][0],a[h][1],a[j][0],a[j][1],a[k][0],a[k][1]));
area3=fabs(area(a[i][0],a[i][1],a[h][0],a[h][1],a[k][0],a[k][1]));
area4=fabs(area(a[i][0],a[i][1],a[j][0],a[j][1],a[h][0],a[h][1]));
if(fabs(area2+area3+area4-area1)<1e-9) {flag=0;break;}
}
if(flag)
{
answer[p][0]=i;
answer[p][1]=j;
answer[p][2]=k;
ans[p]=area1;
p++;
}
}
for(i=0;i<p;i++)
if(ans[i]>max)
{
max=ans[i];
maxi=i;
}
printf("%c%c%c\n",answer[maxi][0]+'A',answer[maxi][1]+'A',answer[maxi][2]+'A');
}
return 0;
}