https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5089

题目大意:给n个木棒,用这n个木棒组成多个三角形,求这些三角形面积和的最大值,如果一个三角也不能组成则输出0.00

(注意:一根木棒就可以当做一条边,刚开始就错误的以为一条边可以由很多木棒共同组成而将题想复杂了)

分析:

将这n个木棒按长度从大到小排(从小到大票排是错误的,我也不知道为什么是错的--!)然后用双重循环暴力,找三角形的三

条边,利用海伦公式求三角形的面积

海伦公式:

a, b, c 分别为三角形的三条边,s为三角形的面积

p = (a + b + c)/2

s = sqrt(p(p-a)(p-b)(p-c));

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<algorithm> using namespace std; const int N = ;
int d[N]; int cmp(const void *a, const void *b)
{
return *(int *)b - *(int *)a;
} bool judge(int a, int b, int c)
{
if(a + b > c && a + c > b && b + c > a)
return true;
return false;
} int main()
{
int n, i, j, a, b, c, f;
double s, sum, p;
while(scanf("%d", &n), n)
{
sum = ;
for(i = ; i < n ; i++)
scanf("%d", &d[i]);
qsort(d, n, sizeof(d[]), cmp);
i = ;
while(i < n - )
{
f = ;
j = i + ;
while(j < n)
{
if(judge(d[i], d[j], d[j + ]))
{
a = d[i];
b = d[j];
c = d[j + ];
p = 1.0 * (a + b + c) / ;
s = 1.0 * sqrt(p * (p - a) * (p - b) * (p - c));
sum += s;
i += ;
j = n;
f = ;
}
else
j++;
}
if(f == )
i++;
}
if(sum == )
printf("0.00\n");
else
printf("%.2f\n", sum);
}
return ;
}

最新文章

  1. 透过代码理解python的静态方法、类方法与实例方法
  2. 传输层(3)-缓冲区大小及限制、TCP输出
  3. MySQL 创建表
  4. xargs 命令
  5. Strobogrammatic Number
  6. Delphi中record和packed record的区别
  7. MySQL 用户管理&mdash;&mdash;权限表
  8. S1:运算符
  9. 如何查看cisco 生成树状态
  10. BigDecimal常用的加减乘除算法、比较大小、保存两位小数点
  11. Linux下卸载Oracle 11g
  12. STL vector用法
  13. Linux中Cache内存占用过高解决办法
  14. 使用PrintDBGridEh进行打印 (转)
  15. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem F (Codeforces 831F) - 数论 - 暴力
  16. 知识点:Mysql 基本用法之事务
  17. 读书笔记_Effective_C++_条款三十七:绝不重新定义继承而来的缺省参数值
  18. MFC中的DLL、LIb文件的创建、使用
  19. 0、weka学习与使用
  20. Lua中“.”调用方法与“:”调用方法的区别

热门文章

  1. 【开发必备】吐血推荐珍藏的Chrome插件
  2. Qt之HTTP上传/下载
  3. 使用Aspose.Cells组件生成Excel文件
  4. C语言之复杂指针详解
  5. mysql日期函数(转)
  6. dede 首页调用单页-&gt;栏目内容
  7. RequireJS进阶(三) 转
  8. 在python中如何设置当前工作目录
  9. ArcGlobe点击IGlobeServerLayer图层读取信息
  10. MYSQL中delete删除多表数据