题目已经给出来了公式,求面积的,不过也可以在百度上找到其他的求面积公式,只是想要寻找内部和边缘都没有点的三角形,我刚开始没想到很好的办法,后来看到一位前辈的方法,确实很简单的就能理解了,只是让自己想的话,就算是费上半天的劲,也想不到好的办法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<stdio.h> #include<math.h> double area(int x1,int y1,int x2,int y2,int x3,int y3) { return fabs(0.5*((y3-y1)*(x2-x1)-(y2-y1)*(x3-x1))); } int main() { int x[16], y[16], n, i, j, k, r, one, two, three, flag; char point[16]; double s, _s; while(scanf("%d",&n) && n) { for(i = 0;i < n; i++) { getchar(); point[i] = getchar(); scanf("%d%d",&x[i],&y[i]); } _s = 0; for(i = 0;i < n-2; i++) for(j = i+1;j < n-1; j++) for(k = j+1;k < n; k++) { s = area(x[i],y[i],x[j],y[j],x[k],y[k]); flag = 1; for(r = 1;r < n; r++) { if((r != i) && (r != j) && (r != k)) { if(s==area(x[i],y[i],x[j],y[j],x[r],y[r])+area(x[i],y[i],x[r],y[r],x[k],y[k])+area(x[r],y[r],x[j],y[j],x[k],y[k])) { flag = 0; break; } } } if(flag && s > _s){_s = s; one = i; two = j; three = k;} } printf("%c%c%c\n",point[one],point[two],point[three]); } return 0; }