UVA 10112 Myacm三角形

参考:http://blog.csdn.net/frankiller/article/details/7730627

关键在想到一个简单好用的

“判断点是否在三角形内部”

#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <set>
#include <cctype>
#include <algorithm>
#include <cmath>
#include <deque>
#include <map>
#include <iomanip>
using namespace std;
///
#define INF 0xffffff7
#define maxn 2000
///
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,A,B,C,p,flag;
	double s,sarea;
	char point[16];  //点的坐标号码
	while (scanf("%d",&n),n)
	{
		for (i=1;i<=n;i++)
		{
			getchar();
			scanf("%c %d %d",&point[i],&x[i],&y[i]);
		}
		sarea=0; 
		for (i = 1; 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 (p = 1; p <= n; p++)
						if (!((p == i)||(p == j)||(p == k))) 
						{
							if (s == area(x[i],y[i],x[j],y[j],x[p],y[p]) + area(x[i],y[i],x[p],y[p],x[k],y[k]) + area(x[p],y[p],x[j],y[j],x[k],y[k]))
							{
								flag=0;
								break;
							}
						}
					if ((flag)&&(s > sarea)) 
					{
						sarea = s; 
						A = i; 
						B = j;
						C = k;
					}
				}
				printf("%c%c%c\n", point[A], point[B], point[C]);
	}

		
    ///
    return 0;
	
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值