-->
当前位置:首页 > 题库 > 正文内容

编程题:圆排列问题

Luz3年前 (2021-12-29)题库720
给定n个大小不等的圆r1,r2,…,r$$_n$$,现要将这n个圆排进一个矩形框中,且要求各圆与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。例如,当n=3,且所给的3个圆的半径分别为1,1,2时,这3个圆的最小长度的圆排列如图所示。其最小长度为2+$$4\sqrt2$$


![1.png](~/99c59682-a181-4be2-87a0-675842e76a6d.png)


### 输入格式:
第一行一个整数n(n<=10)。

第二行n个整数,分别表示n个圆的半径(半径<100)。

### 输出格式:

第一行一个数表示圆排列后的最小长度(小数点后保留4位)。

第二行n个数表示某圆排列得到最小长度时的各个圆的半径(半径按排列顺序输出,每个数后面一个空格)。

### 输入样例:



in
3
1 1 2


### 输出样例:



out
7.6569
1 2 1

题目保证排列顺序答案唯一。





答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。