问题描述
由用户给出一个大圆 和n个小圆的半径,然后 把这几个小圆不重叠的放进去,如果都能放进去,给出算法,如果放不进去,尽可能多的放,使放进去的小圆面积之和最大,
算法描述(不严密)
1先在图像中输出大圆
2把小圆按半径从大到小排列
3把第一个圆放到大圆的最下面(4第二圆要与大圆和先放进去的小圆相切,这个可以通过二元二次方程解出连个圆心,判断两个圆是否都合理(和别的圆不重叠),如都合理,选择一个好的放法,如只有一个合理,选择之,都不理和,结束,放第三个圆的时候,要分别求和大圆与其中一个小圆相切, 大圆与另个小圆相切,两个小圆相切,共求出六个圆心,判断是否合理 ,并选择最好的然后依次放第4个,5个。n个。直到都不判断都不合理,或者没有可放的圆。
怎么用程序实现啊?大家帮帮忙啊?
由用户给出一个大圆 和n个小圆的半径,然后 把这几个小圆不重叠的放进去,如果都能放进去,给出算法,如果放不进去,尽可能多的放,使放进去的小圆面积之和最大,
算法描述(不严密)
1先在图像中输出大圆
2把小圆按半径从大到小排列
3把第一个圆放到大圆的最下面(4第二圆要与大圆和先放进去的小圆相切,这个可以通过二元二次方程解出连个圆心,判断两个圆是否都合理(和别的圆不重叠),如都合理,选择一个好的放法,如只有一个合理,选择之,都不理和,结束,放第三个圆的时候,要分别求和大圆与其中一个小圆相切, 大圆与另个小圆相切,两个小圆相切,共求出六个圆心,判断是否合理 ,并选择最好的然后依次放第4个,5个。n个。直到都不判断都不合理,或者没有可放的圆。
怎么用程序实现啊?大家帮帮忙啊?
解决方案 »
- 求助!急!com.microsoft.sqlserver.jdbc.SQLServerException: 该连接已关闭。
- 源码分享-自制植物大战僵尸
- 倾出所有分求解,如何精简Jre
- Access 中文问题
- java人事管理系统,SWING+ORACLE10G+HIBERNATE
- 怎样全局设置窗口中所以组件的字体?
- 突发奇想的一个问题!!!!!!!!!!!!!!
- 请问哪里有好的Java API参考手册下载?
- 我有一个函数
- 当你遇到这类错误的时候该怎么办?
- 高手帮忙看看关于JDBC插入数据的问题
- [菜鸟提问] [工具JBuilder x]在一个contentpane窗体中,如何实现关闭取消和保存
其中e1,e2均为足够小的正数。如果按上述算法显然得到的肯定不是最优解。