木棍游戏 深度优先搜索
题目描述
给出 nnn 根长度不一的木棍,第 iii 根棍子长度为 aia_iai 。两根长度分别为 aba_bab 和 aca_cac 的木棍可以拼接成一根长度为 ab+aca_b+a_cab+ac 的木棍,同理 333 根, 444 根,甚至 nnn 根都能拼接。
问:使用这 nnn 根木棍作三角形的边(一根木棍至多使用一次,也可以不使用),能拼出的面积最大的三角形的面积。
输入描述:
第一行包含一个整数 nnn (3≤n≤8)(3 \le n \le 8)(3≤n≤8),表示木棍的数量。
第二行包含 nnn 个整数,用空格隔开,表示 nnn 根木棍的分别长度 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an 其中 1≤ai≤1e31\le a_i\le 1e31≤ai≤1e3。
输出描述:
输出一行,表示能拼出来的最大三角形的面积,结果保留一位小数。如果无法拼出三角形,输出−1-1−1。
示例1
输入
3 3 4 5
输出
6.0
示例2
输入
3 3 4 7
输出
-1
这一题似乎不太能贪心,规律并不好找,但是因为数据量很小,就采用最暴力的方法,用搜索来解决
可以看出一个木棍有四种状态,在第一条边,第二条边,第三条边,不在任何一条边,这里就把a,b,c当做三角形的第1,2,3条边,dfs搜索以下边为参数,向前走一直走到没有元素为止,这个时候判断一下三角形是否合法并更新ans就可以
有一些小细节就写在程序里了
#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
int xx[1000];
int a, b, c;
int n;
double ans=-1;
double s(int a, int b,int c)
{double p = (a + b + c) / 2;return sqrt(p*(p-a)*(p-b)*(p-c));
}
void dfs(int x)
{if (x > n)//枚举超出了数组,代表所有的数都有了位置,{if (a < b + c && b < a + c && c < a + b)//满足条件{//printf("%d %d %d\n",a,b,c);ans = max(ans, s(a, b, c));return;}else return;}//接下来搜索四种状态-->a[x]不放,放第一二三条边,;//直接跳过这个数dfs(x + 1);a +=xx[x];//第一条边dfs(x + 1);a -= xx[x]; b += xx[x];//放第二条边dfs(x + 1);b -= xx[x]; c += xx[x];//第三跳dfs(x + 1);c-=xx[x];//最后一步取出来的操作不能忘记
}
int main()
{scanf("%d", &n);for (int i = 1; i <= n; i++)scanf("%d", xx + i);dfs(1);if (ans == -1)printf("-1\n");else printf("%.1lf\n", ans);return 0;
}
木棍游戏 深度优先搜索相关推荐
- 【深度优先搜索】一个实例+两张动图彻底理解 DFS | DFS 与 BFS 的区别 | 用 DFS 自动控制我们的小游戏
前言: 在第一篇文章中(link),我们讨论了 如何用 pygame 写一个小游戏,并用键盘交互控制 .接下来,我们将分别用 DFS .BFS .DRL 实现自动控制.这篇文章讨论了什么是深度优先搜索 ...
- 【YBT高效进阶】1基础算法/4深度优先搜索/2数独游戏
[YBT高效进阶]1基础算法/4深度优先搜索/2数独游戏 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 数独是一种传统益智游戏,你需要 ...
- (国赛B题)沙漠掘金——基于深度优先搜索的沙漠掘金游戏策略求解(上)
摘要 穿越沙漠游戏是一个由单人或多人玩家在一定的游戏参数设定之下,综合考虑行走路径,移动策略以及购买策略以实现最终收益最大化的项目,本文主要从最优移动策略的性质出发讨论如何快速计算寻找所有可能路径,以 ...
- 农夫过河游戏的几种处理方法(DFS深度优先搜索,BFS广度优先搜索)
农夫过河游戏规则:在左岸有农夫.狼.羊.菜,农夫需要想办法将狼.羊.菜最终都带到右岸,条件就是农夫不在的时候,狼会吃羊,羊会吃菜,而且每次只能带一样,或者不带. 这里会用到堆栈.队列.列表这样的数据结 ...
- 深度优先搜索之数独游戏
1. 问题描述: 你一定听说过"数独"游戏. 如下图所示,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个同色九宫内的数字均含1-9,不重 ...
- DFS深度优先搜索 岛屿问题 涂色问题 扫雷游戏
题目:https://leetcode-cn.com/problems/number-of-islands/ 参考:https://leetcode-cn.com/problems/number-of ...
- 2018-2-22 《啊哈,算法》再练习广度优先搜索,题:炸怪兽, 2-23改用深度优先搜索。宝岛探险(广度,深度,及地图着色)2-24水管工游戏,2-25测试水管工代码...
2小时. 先是是纠错,通过对代码运行过程的测试.发现是变量打错.以及录入地图❌. 重构练习题,改使用while..end代替for in. ⚠️ : 在while(k <= n)中如果用到nex ...
- 深度优先搜索(DFS) 总结(算法+剪枝+优化总结)
深度优先搜索(DFS) 总结(算法+剪枝+优化总结) 本文中会引用部分实例.文献资料来自不同的作者之手,由于资料整理比较困难,转载地址不在文中列举.如有侵权请联系我更换或删除!对于提供题解思路的各位大 ...
- LeetCode算法总结-回溯法与深度优先搜索
转载自 LeetCode算法总结-回溯法与深度优先搜索 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退 ...
最新文章
- 英语面试简短问题_用简单的英语解释产品设计
- KeyedVectors python 从词向量文件中快速生成{词:词向量}
- 格式编号始终显示2个小数位
- 修改 PhpStorm 的字体和样式
- 数据结构之B树与B+树
- maven 常用的插件
- 20220208--CTF刷题记录--6道简单的MISC题目
- Educational Codeforces Round 1
- WPF 用代码实现WrapPanel右侧自动对齐(解决多余空白问题)
- 计算分数数组中去掉最低分的平均分,并打印
- php用json_encode编码后乱码,php json_encode()函数中文编码乱码解决方法_PHP教程
- redis使用指南(一)
- 立即预约!Meet Qt Online中国来了
- javascript ~~canvas url blob转换
- HDU 1527 取石子游戏
- CSS常用基础效果---文字与图片并排+导航栏
- 高中数学建模优秀论文_高中数学建模优秀论文
- 自学Python:批量转换WORD文档为PDF
- win7 此计算机无法连接到家庭组,Win7旗舰版无法进入家庭组如何处理
- 设计模式-手机生产-抽象工厂模式