发表时间:2014-09-05来源:网络
#include<iostream> #include<cmath> #include<iomanip> #include<cstring> #include<float.h> using namespace std; int m,Put[10]; //Put[i]:放置的第i个圆的编号 double MinL,size[10],center[10];//size[i]:编号为i的圆的半径;center[i]:放置的第i个圆的圆心位置 bool vis[10]; double getlen(int a,int b) //计算两圆心间的距离 { return sqrt((size[a]+size[b])*(size[a]+size[b])-(size[a]-size[b])*(size[a]-size[b])); } bool isok(int a,int b) //是否和之前放的圆相交 { for (int i=0;i<b;i++) { if (sqrt((center[i]-center[a])*(center[i]-center[a])+(size[Put[i]]-size[Put[a]])*(size[Put[i]]-size[Put[a]]))<(size[Put[i]]+size[Put[a]])) return false; } return true; } void dfs(int cur) { int i,j; if (cur==m) { double maxsize=0; for (int k=0;k<cur;k++) { if (center[k]+size[Put[k]]>maxsize) maxsize=center[k]+size[Put[k]]; } if (maxsize<MinL) MinL=maxsize; } else { for (i=0;i<m;i++) { if (!vis[i]) { Put[cur]=i; vis[i]=1; double tmpl; bool ok=1; for (j=cur-1;j>=0;j--) { tmpl=getlen(Put[j],i); center[cur]=center[j]+tmpl; if (center[cur]-size[Put[cur]]<0) {ok=0;break;} if (isok(cur,j)) break; } if (ok) dfs(cur+1); vis[i]=0; } } } } int main() { int n; cin>>n; while(n--) { cin>>m; MinL=DBL_MAX; memset(vis,0,sizeof(vis)); for (int i=0;i<m;i++) cin>>size[i]; for (int i=0;i<m;i++) { Put[0]=i; center[0]=size[i]; vis[i]=1; dfs(1); vis[i]=0; } cout<<fixed<<setprecision(3)<<MinL<<endl; } return 0; }
CI框架连接数据库配置操作以及多数据库操作
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
C语言关键字及其解释介绍 C语言32个关键字详解
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
将视频设置为Android手机开机动画的教程
PHP中的(++i)前缀自增 和 (i++)后缀自增
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
常用dos命令及语法
PHP中include和require区别之我见
中山眼科中心app下载v6.3.1
45.28MB |生活服务
易查车辆违章查询下载v3.2.20
138.59M |生活服务
鞍马司机极速版最新版本下载v6.40.5.0003
151.09MB |系统工具
星徽专车司机端软件最新版本下载v2.0.45
79.47MB |生活服务
临汾云客户端下载v2.1.17 安卓手机版
162.83MB |资讯阅读
jp五十音图app(改名冲鸭日语)下载v1.9.5 安卓版
151.29MB |学习教育
智通三千企业app下载v1.84 安卓版
101.14MB |商务办公
左拍app下载v5.3.1 安卓版
297.16MB |拍摄美化
2014-09-05
2022-03-20
2022-03-21
2022-03-24
2014-09-05
2014-09-05
2015-07-05
2014-09-05
2022-03-21
2014-09-05