[编程题] 寻找三角形
来源:互联网 发布:连江尚德中学网络硬盘 编辑:程序博客网 时间:2024/06/02 13:12
[编程题] 寻找三角形
时间限制:1秒
空间限制:32768K
三维空间中有N个点,每个点可能是三种颜色的其中之一,三种颜色分别是红绿蓝,分别用'R', 'G', 'B'表示。
现在要找出三个点,并组成一个三角形,使得这个三角形的面积最大。
但是三角形必须满足:三个点的颜色要么全部相同,要么全部不同。
现在要找出三个点,并组成一个三角形,使得这个三角形的面积最大。
但是三角形必须满足:三个点的颜色要么全部相同,要么全部不同。
输入描述:
首先输入一个正整数N三维坐标系内的点的个数.(N <= 50) 接下来N行,每一行输入 c x y z,c为'R', 'G', 'B' 的其中一个。x,y,z是该点的坐标。(坐标均是0到999之间的整数)
输出描述:
输出一个数表示最大的三角形面积,保留5位小数。
输入例子1:
5R 0 0 0R 0 4 0R 0 0 3G 92 14 7G 12 16 8
输出例子1:
6.00000
思路:
暴力枚举,海伦公式求面积
#include<iostream>#include<vector>#include <cmath>#include <algorithm>using namespace std;struct node{ double x,y,z;}r[55],g[55],b[55];double dis(node a,node b){ return sqrt( (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z) );}double solve(node a,node b,node c){ double ab=dis(a,b); double ac=dis(a,c); double bc=dis(b,c); double p=ab+ac+bc; p/=2; return sqrt( p*(p-ab)*(p-ac)*(p-bc));}int main(){ int n; cin>>n; int cntr=0,cntg=0,cntb=0; char s[5]; for(int i=1;i<=n;i++) { cin>>s; if(s[0]=='R') cntr++,cin>>r[cntr].x>>r[cntr].y>>r[cntr].z; else if(s[0]=='G') cntg++,cin>>g[cntg].x>>g[cntg].y>>g[cntg].z; else cntb++,cin>>b[cntb].x>>b[cntb].y>>b[cntb].z; } double maxx=0; for(int i=1;i<=cntr;i++) for(int j=i+1;j<=cntr;j++) for(int k=j+1;k<=cntr;k++) maxx=max(maxx,solve(r[i],r[j],r[k])); for(int i=1;i<=cntg;i++) for(int j=i+1;j<=cntg;j++) for(int k=j+1;k<=cntg;k++) maxx=max(maxx,solve(g[i],g[j],g[k])); for(int i=1;i<=cntb;i++) for(int j=i+1;j<=cntb;j++) for(int k=j+1;k<=cntb;k++) maxx=max(maxx,solve(b[i],b[j],b[k])); for(int i=1;i<=cntr;i++) for(int j=1;j<=cntg;j++) for(int k=1;k<=cntb;k++) maxx=max(maxx,solve(r[i],g[j],b[k])); printf("%.5lf\n",maxx);}
阅读全文
0 0
- [编程题] 寻找三角形
- [编程题] 寻找三角形
- [编程题] 寻找三角形
- [编程题] 寻找三角形
- [编程题] 寻找三角形
- 寻找三角形(编程题)
- 【算法题】寻找三角形
- mapreduce编程---寻找图中的三角形
- 寻找三角形
- 寻找三角形
- 寻找三角形
- 寻找三角形
- 寻找三角形
- 寻找三角形
- 3--百度2017春招笔试真题编程题集合--寻找三角形 (Python)
- 百度2017春招笔试真题编程题集合--寻找三角形
- 百度2017春招笔试真题[编程题] 寻找三角形
- 百度2017春招笔试真题编程题集合:寻找三角形 [python]
- 链式栈 C语言数据结构
- [Unity][JSON][List][JSONUnity]多个角色的数据读取写入JSON数据
- 第三周周总结
- MyBatis中Like语句使用方式
- js回显复选框,后台动态查询数据显示复选框
- [编程题] 寻找三角形
- 操作符new
- java XML解析
- qt单元测试用法,qt5单元测试例子,qt5单元测试demo,测试你的函数
- C
- 翻转字符串
- 2017机器人与自动化领域SCI期刊最新影响因子
- 关于数组越界问题简析
- elasticsearch java 基于TransportClient API的增删改查