Pro.ID2089 TitleAL095 圆排列问题 Title链接http://10.20.2.8/oj/exercise/problem?problem_id=2089 AC0 Submit3 Ratio0.00% 时间&空间限制描述给定n个大小不等的圆c , c , , cn 1 2 ,现要将这n个圆排进一个矩形框中,且要求各圆与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。例如,当n=3,且所给的3 个圆的半径分别为1,1,2时,这3个圆的最小长度的圆排列如图所示。其最小长度为2 + 4 * sqrt( 2 ) 。
解圆排列问题的一个随机化算法如下。 static void Circle_search(int []x,int n) 根据上述算法框架,设计一个随机化算法,对于给定的n个圆,计算n个圆的最佳排列方案,使其长度尽可能小。 输入输入第一行是个正整数n ( 1 <= n <= 20 )。接下来的一行有n个数,表示n个圆的半径。 输出Description 给定n个大小不等的圆c , c , , cn 1 2 ,现要将这n个圆排进一个矩形框中,且要求各圆与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。例如,当n=3,且所给的3 个圆的半径分别为1,1,2时,这3个圆的最小长度的圆排列如图所示。其最小长度为2 + 4 * sqrt( 2 ) 。
解圆排列问题的一个随机化算法如下。 static void Circle_search(int []x,int n) 根据上述算法框架,设计一个随机化算法,对于给定的n个圆,计算n个圆的最佳排列方案,使其长度尽可能小。 Input 输入第一行是个正整数n ( 1 <= n <= 20 )。接下来的一行有n个数,表示n个圆的半径。 Output 输出最小圆排列的长度。输出结果保留6位数字。 Sample Input 3 1 1 2 Sample Output 7.65685 样例输入3 1 1 2 样例输出7.65685 提示作者 |