标签:style http io ar os sp for on div
传送门:HDU_5135
题意:给你n个木棒,拼出任意个三角形,要求面积和最大,输出max(s);
3 1 1 20 7 3 4 5 3 4 5 90 0
0.00 13.64
思路:暴力搜索
代码:
#include<iostream> #include<cstring> #include<cmath> #include<cstdio> #include<algorithm> #include<string> #include<map> #include<vector> #include<queue> #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define INF 0x3f3f3f3f #define PI acos(-1.0) #define mem(a,b) memset(a,b,sizeof a) #define read_ freopen("i.txt","r",stdin) using namespace std; typedef long long LL; const int N=100010; int n; double sti[20]; int vis[20]; double ans; void dfs(int cur,double s) { for(int i=cur;i<n-2;i++) if(!vis[i]){ for(int j=i+1;j<n-1;j++) if(!vis[j]){ for(int k=j+1;k<n;k++) if(!vis[k]){ if(sti[i]+sti[j]>sti[k]&&sti[i]+sti[k]>sti[j]&&sti[j]+sti[k]>sti[i]) { vis[i]=vis[j]=vis[k]=1; double p=(sti[i]+sti[j]+sti[k])/2; double ss=sqrt(p*(p-sti[i])*(p-sti[j])*(p-sti[k])); dfs(i+1,s+ss); vis[i]=vis[j]=vis[k]=0; } } } } ans=max(ans,s); } int main() { while(scanf("%d",&n),n) { ans=0.0; mem(vis,0); for(int i=0;i<n;i++) scanf("%lf",sti+i); sort(sti,sti+n); dfs(0,0.0); printf("%.2f\n",ans); } return 0; }
HDU_5135 Little Zu Chongzhi's Triangles[爆搜]
标签:style http io ar os sp for on div
原文地址:http://blog.csdn.net/code_or_code/article/details/41723961