C-木棍游戏
题目:链接:https://ac.nowcoder.com/acm/contest/11220/C
来源:牛客网
解题思路:爆搜没什么好说的,但今天实现时却写的磕磕绊绊的,说明代码能力下降了许多。
已知三边算三角形面积:海伦公式
设\(p=\frac{a+b+c}{2}\) 则有 \(s_{area}=\sqrt{p(p-a)(p-b)(p-c)}\)
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
const int N=1e5+10;
int num[N],n;
double ans;
double add(double a,double b,double c)
{
double p=(a+b+c)/2;
double sum=sqrt(p*(p-a)*(p-b)*(p-c));
return sum;
}
bool check(double a,double b,double c)
{
if(a+b<=c||a+c<=b||b+c<=a)return false;
return true;
}
void dfs(double a,double b,double c,int idex)
{
if(check(a,b,c))ans=max(ans,add(a,b,c));
if(idex>n)return;
dfs(a+num[idex],b,c,idex+1);
dfs(a,b+num[idex],c,idex+1);
dfs(a,b,c+num[idex],idex+1);
dfs(a,b,c,idex+1);
return;
}
void solve()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>num[i];
dfs(0,0,0,0);
if(ans==0)cout<<-1<<endl;
else printf("%.1f",ans);
return;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int t=1;//cin>>t;
while(t--)solve();
return 0;
}