题目如下:

来源:牛客网

题目描述

给出 n 根长度不一的木棍,第 iii 根棍子长度为 ai 。两根长度分别为 Ab 和​Ac 的木棍可以拼接成一根长度为Ab+Ac​ 的木棍,同理 3 根, 4 根,甚至 n 根都能拼接。

问:使用这 n 根木棍作三角形的边(一根木棍至多使用一次,也可以不使用),能拼出的面积最大的三角形的面积。

输入描述:


第一行包含一个整数 n (3≤n≤8),表示木棍的数量。

第二行包含 n 个整数,用空格隔开,表示 n 根木棍的分别长度 a1,a2,...,an其中 1≤ai≤1e3。

输出描述:

输出一行,表示能拼出来的最大三角形的面积,结果保留一位小数。如果无法拼出三角形,输出−1。

示例1

输入

3

3 4 5

3
3 4 5

输出

6.0

示例2

输入

3

3 4 7

输出

-1

AC代码如下:

#include<bits/stdc++.h>
using namespace std;
int vis[10];
double ans;
int num[10];
int n;
bool check(int a[]){if(a[1]+a[2]<=a[3]||a[2]+a[3]<=a[1]||a[1]+a[3]<=a[2])return 0;return 1;
}
double dis(int a[]){double p = (a[1]+a[2]+a[3])/2;return sqrt(p*(p-a[1])*(p-a[2])*(p-a[3]));
}
void dfs(int now,int a[],int f,int sum){if(f==4){if(check(a))ans = max(ans,dis(a));return;}if(now==n+1){if(sum==0)return;a[f] = sum;dfs(1,a,f+1,0);return;}dfs(now+1,a,f,sum);if(!vis[now]){vis[now] = 1;dfs(now+1,a,f,sum+num[now]);vis[now] = 0;}
}
int main()
{cin>>n;int a[4] = {0};for(int i = 1;i<=n;++i)cin>>num[i];dfs(1,a,1,0);if(ans<0.0000001)cout<<-1<<endl;else printf("%.1lf",ans);return 0;
}

题解:

观察到n只有8,dfs爆搜即可 实际只有2^20次方根本超不了

使用海伦公式求三角形的面积:

注意:

要先判断三边是否可以构成三角形

bool check(int a[]){if(a[1]+a[2]<=a[3]||a[2]+a[3]<=a[1]||a[1]+a[3]<=a[2])return 0;return 1;
}

再求其面积 并 存储最大面积

double dis(int a[]){double p = (a[1]+a[2]+a[3])/2;return sqrt(p*(p-a[1])*(p-a[2])*(p-a[3]));
}
if(f==4){if(check(a))ans = max(ans,dis(a));return;}

最后,感谢您的阅读!!!

牛客小bai月赛43——C 木棍游戏(DFS)相关推荐

  1. 牛客小bai月赛39 F 孤独(dp)

    牛客小白月赛39 F 孤独 #include <bits/stdc++.h> using namespace std; typedef long long ll; int ans = IN ...

  2. E 排队(排列组合)[牛客小*白月赛61]

    题面如下: 思路 or 题解: 对于一个长度为 nnn 的 排列组合 如果存在一对 逆序对 (x,y)(x, y)(x,y) xxx 在 yyy 的前面有 n∗(n−1)2\frac{n * (n - ...

  3. 牛客网小bai月赛40

    牛客网小白月赛40 A 数字游戏 B 跳跳跳 D 优美字符串 E 分组 F 过桥 G 空调遥控 I 体操队形 牛客比赛页面跳转 这是一篇菜鸟的自我总结,大佬勿喷,轻点轻点~ A 数字游戏 题目意思: ...

  4. 牛客小d和孤独的区间

    牛客小d和孤独的区间 这道题我们如果等到数据都输入完后再计算会浪费很多时间 所以还是每次输入都计算一遍 我们知道要找到一个区间里只有一个1,其余都是0 所以这时候我们可以将输入分为两种情况 1,输入为 ...

  5. oj记录 牛客小I白月赛50 C减法与求余 (思维

    题目描述 链接:https://ac.nowcoder.com/acm/contest/11227/C 来源:牛客网 鸡尾酒的学生丹丹分不清求余和减法,因为他觉得两种运算都是将一个数字变小,所以都差不 ...

  6. 牛客-小a与星际探索

    这是一道伪图论题 链接:https://ac.nowcoder.com/acm/problem/22144 来源:牛客网 题目描述 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从11号星球出发前往n ...

  7. 牛客——小a与星际探索

    链接:https://ac.nowcoder.com/acm/contest/317/C 来源:牛客网 题目描述 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从11号星球出发前往nn号星球.其中每个 ...

  8. 牛客—— 小A的最短路 (LCA)

    [牛客] 小A的最短路 (LCA) 原题链接 题意: 给定一棵树,除给定的特殊边边权为0外,其余边权均为1.求两点之间的最短距离.n为3e5 思路: 今天碰到的第一道喜欢的题hhhhhh 题目是一棵树 ...

  9. 牛客xiao白月赛61-D,E,F

    D. 链接:https://ac.nowcoder.com/acm/contest/46597/D 来源:牛客网 酒足饭饱之后 PLMM 有些无聊,询问 The__Flash 要不要做什么有趣的事情, ...

最新文章

  1. cp -r dir1/. dir2 表示将dir1下的文件复制到dir2,不包括dir1目录
  2. 嵌入式Linux开发环境的搭建
  3. table ADR6 引起的equipment download error
  4. 数据挖掘 点击更多 界面_8(更多)技巧,可快速改善用户界面
  5. java单词测试,java单词 - 在线打字测试(dazi.kukuw.com)
  6. UVA1586 ​​​​​​​ Molar mass
  7. 如何用100美元和TensorFlow来造一个能“看”东西的机器人
  8. 前言-小迪web安全渗透培训视频笔记
  9. 小米笔记本PRO黑苹果使用第三方蓝牙设备
  10. java生成pdf合同
  11. [gitHub使用笔记一]ubuntu下快速访问github官网的方法
  12. 东瓜小知识之《简单查询网卡的厂商信息》
  13. 傅里叶变换一步步详细推导
  14. 读书笔记:Bi-Directional Cascade Network for Perceptual Edge Detection
  15. python 白噪声检验-Python中的白噪声时间训练
  16. 成功解决ImportError: cannot import name ‘GloVe‘ from ‘torchtext.legacy.vocab‘
  17. CentOS7出现网络不可达情况
  18. windows下解压.bz文件
  19. 两万字梳理 Java 入门进阶那些事
  20. 杜克大学电气与计算机考研,解析:杜克大学电气与计算机工程专业

热门文章

  1. 使用Swagger服务搭建.Net Core API
  2. 【记录】jenkins 安装及环境配置(一)
  3. avocado自动化测试框架
  4. unity技能框架_如何使用指导框架学习新技能
  5. python中二进制表示_Python中的二进制搜索:直观介绍
  6. chrome 全屏截图_如何在不带扩展功能的Chrome中拍摄全屏截图
  7. 如何在JavaScript中使用apply(?),call(?)和bind(➰)方法
  8. 基于python tkinter的课堂点名小程序
  9. 22个学习Python必备的库,你是否还有没见过的呢
  10. 让你事半功倍的小众 Python库