木棍游戏(牛客月赛)dfs

原题链接

题目

木棍游戏(牛客月赛)dfs_第1张图片

思路

数据很小,直接 d f s dfs dfs 爆搜。
然后枚举每一根木棍放在每一个位置的情况。

代码

#include 
using namespace std;
const int N = 100;
double a[N];

double ans = -1;

double helen(double a,double b,double c)
{
    double p = (a + b + c) / 2;
    double s = sqrt(p * (p - a) * (p - b) * (p - c));
    return s;
}
int n;
void dfs(double x, double y, double z, int u)
{
	if (x + y > z && abs(x - y) < z)
	{
		ans = max (ans, helen(x, y, z));
	}
	if (u > n) return;
	dfs(x + a[u], y, z, u + 1);
	dfs(x, y + a[u], z, u + 1);
	dfs(x, y, z + a[u], u + 1);
	dfs(x, y, z, u + 1);
}

int main()
{
	
	cin >> n;
	for (int i = 1; i <= n; i ++ ) cin >> a[i];
	dfs(0, 0, 0, 1);
	cout << ans << endl;
	return 0;
}

总结

写算法题,如同逆水行舟,不进则退。

最近在家效率十分低下,总是不知道在干什么,然后回莫名其妙的睡着,加上事情又多,一天天的也不懂在干啥。然后很简单的题也没能写出来。

在热爱的道路上,一定要坚持下去!

你可能感兴趣的:(搜索与图论,牛客,简单题,游戏,深度优先,算法)