求一个矩形内若干圆的面积占比最大值的算法

刚无聊想到一道算法题
已知一个矩形的的长宽和圆的个数,求这里面圆的面积占比最大为多少?
比如一个10*10的矩形,如果要求圆的个数为一,那么这个圆的直径应该就是10了,如果园的个数为2,那么这两个圆的直径可能一个10,另一个就是大圆的边角了,或者两个直径都是5或者其他,但是需要里面圆占得面积比是最高的,所以两个圆的直径应该是唯一的,同样三个圆四个圆,或者矩形的长宽比为3:2等等,那么里面的圆应该怎样的。

函数

//h:矩形的高,w:矩形的宽,count:圆的个数function fn(h,w,count) {
            
}


白衣染霜花
浏览 1050回答 1
1回答

一只甜甜圈

尽可能取半径最大值优先画圆。以下算法思路有错误,忽略每个矩形内画一个圆后必定有4个角落空间可以继续画圆也有可能存在矩形的长-宽的剩余的空间继续画圆(如果是正方形,则此条不存在)思路是每次画圆后,根据当前的长,宽计算出上面2条可能出现的长,宽,半径,放入优先队列,接着每次取出最大的半径值继续画圆,直到count为0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java