【算法题】寻找三角形
来源:互联网 发布:国家网络安全法 解读 编辑:程序博客网 时间:2024/05/29 17:21
三维空间中有N个点,每个点可能是三种颜色的其中之一,三种颜色分别是红绿蓝,分别用’R’, ‘G’, ‘B’表示。
现在要找出三个点,并组成一个三角形,使得这个三角形的面积最大。
但是三角形必须满足:三个点的颜色要么全部相同,要么全部不同。输入描述:
首先输入一个正整数N三维坐标系内的点的个数.(N <= 50)
接下来N行,每一行输入 c x y z,c为’R’, ‘G’, ‘B’ 的其中一个。x,y,z是该点的坐标。(坐标均是0到999之间的整数)输出描述:
输出一个数表示最大的三角形面积,保留5位小数。输入例子:
5
R 0 0 0
R 0 4 0
R 0 0 3
G 92 14 7
G 12 16 8输出例子:
6.00000
输出保留5位有效数字: http://blog.csdn.net/edricbjtu/article/details/41082597
point和distance函数与std命名空间冲突
#include <iostream>#include <vector>#include <iomanip>using namespace std;//#define debug_struct mypoint{ char C; int x; int y; int z;};double mydistance(mypoint a, mypoint b){ double tmp; tmp = 0; tmp += (a.x - b.x)*(a.x - b.x); tmp += (a.y - b.y)*(a.y - b.y); tmp += (a.z - b.z)*(a.z - b.z); tmp = sqrt(tmp); return tmp;}double space(mypoint a, mypoint b, mypoint c){ double h1 = mydistance(a, b); double h2 = mydistance(b, c); double h3 = mydistance(a, c); double p = (h1 + h2 + h3)/2; double s = p*(p - h1)*(p - h2)*(p - h3); s = sqrt(s); return s;}double func(vector<mypoint>& vec){ double maxs = 0; for (auto i = 0; i < vec.size(); ++i) { for (auto j = i + 1; j < vec.size(); ++j) { for (auto k = j + 1; k < vec.size(); ++k) { if (vec[i].C == vec[j].C && vec[i].C != vec[k].C) { continue; } if (vec[i].C == vec[k].C && vec[i].C != vec[j].C) { continue; } if (vec[j].C == vec[k].C && vec[j].C != vec[i].C) { continue; } double s = space(vec[i], vec[j], vec[k]); if (s > maxs) { maxs = s; } } } } return maxs;}int main(){ int n; vector<mypoint> vec;#ifdef debug_ n = 472;#else cin >> n; vec.resize(n); for (auto i = 0;i<n;++i) { cin >> vec[i].C; cin >> vec[i].x; cin >> vec[i].y; cin >> vec[i].z; }#endif cout.setf(ios::fixed); cout << fixed << setprecision(5) << func(vec) << endl; return 0;}
阅读全文
0 0
- 【算法题】寻找三角形
- [编程题] 寻找三角形
- [编程题] 寻找三角形
- [编程题] 寻找三角形
- [编程题] 寻找三角形
- [编程题] 寻找三角形
- 寻找三角形(编程题)
- 寻找三角形
- 寻找三角形
- 寻找三角形
- 寻找三角形
- 寻找三角形
- 寻找三角形
- 算法题:寻找峰值
- 经典算法题:数字三角形寻找最大路径——动态规划和递归调用两种解法
- 算法题-倒三角形
- 【算法题】组装三角形
- 牛客网 寻找三角形
- stm32f4启动代码分析(一)
- easyui datagrid由横表转成纵表
- angular的依赖注入笔记
- 解决python3 网络请求路径包含中文
- mybatis mysql int 返回结果为null的解决
- 【算法题】寻找三角形
- ubuntu16.04 caffe
- C语言数据结构——孩子表示法
- R-CNN算法详解
- Java基本语法笔记
- 数据库分页注意点
- Android中的context使用(getApplicationContext和Activity.this的区别和使用)
- 反常积分
- 请别叫我程序员!其实我不会,真的!