UVA10112Myacm Triangles
来源:互联网 发布:2016年双11淘宝交易额 编辑:程序博客网 时间:2024/06/05 10:07
UVA-10112
题意:给n个点,求其中不包含其他点的面积最大的三角形。
解题思路:暴力枚举三个点算面积,并判断其他点会不会在里面。判断点在不在里面的方法有好几个,因为题目给了坐标算面积的公式,所以这里就用面积法。如果p在abc内的话有 Sabc = Sabp + Sacp +Sbcp。
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;struct node{ int x,y; char c;} s[20];int n;int a1,a2,a3;double area(int i, int j, int k){ double S = 0.5*((s[k].y-s[i].y)*(s[j].x-s[i].x)-(s[j].y-s[i].y)*(s[k].x-s[i].x)); if (S<0) S=-S; return S;}int main () { freopen("xx.in","r",stdin); while (scanf("%d\n",&n) && n) { for (int i = 1; i <= n; i++) scanf("%c%d%d\n",&s[i].c,&s[i].x,&s[i].y); double maxs=0.0,S=0; for (int i = 1; i <= n; i++) for (int j = i+1; j <= n; j++) for (int k = j+1; k <=n; k++) { S = area(i,j,k); if (S > maxs){ bool tag=false; for (int l = 1; l <= n; l++){ if (l != i && l != j && l != k && S == area(i,j,l)+ area(i,k,l)+ area(j,k,l)){ tag=true; break; } } if (!tag) { maxs=S; a1=i;a2=j;a3=k; } } } printf("%c%c%c\n",s[a1].c,s[a2].c,s[a3].c); }}
0 0
- UVA10112Myacm Triangles
- Triangles
- Triangles
- Triangles
- Triangles
- Triangles
- Triangles
- Number Triangles
- JOJ1007: Triangles
- pku1569Myacm Triangles
- Number Triangles
- Number Triangles
- Number Triangles
- Number Triangles
- Counting Triangles
- Right Triangles
- ACdream Triangles
- Myacm Triangles
- DNS 原理入门
- 试说明进程在三个基本状态之间转换的典型原因。
- Java中HashMap遍历的两种方式
- 栈与队列
- IIOP.net 编译多仓库IDL 失败
- UVA10112Myacm Triangles
- IO流的基本使用方法
- js对象排序&&倒序
- js Number.prototype 对象 设置一些方法
- 亚马逊云搭建LAMP环境并部署WordPress
- java和Json
- Qt的语法高亮类(注释方式)
- 优化学习率 - 1 - 回溯线性搜索和二次插值线性搜索
- HBase集群整体宕机报告(2016.7.13)