题目:现有一个大矩形,宽为W,高为H;请设计一个算法使用小矩形填充满大矩形,要求传入一个整数数组,数组长度代表小矩形的数量,数组值代表其在大矩形中所占的面积比例,小矩形的面积比例之和为100;不能直接水平或垂直切分。
小弟想了半天也没有头绪,请教大神帮忙啊。
class Program { static void Main(string[] args) { new Test().Calculate(new[] {20, 10, 25, 45}); Console.Read(); } class Test { private int Width = 500; private int Height = 300; public void Calculate(int[] array) { // TODO } } }
好像是个 背包问题。每次你都取最大丢进去匹配下,比如第一个长方形,放入小长方形中最大的,然后第一个长方形就被切成2个长方形,这两个长方形以 比重最大的分配,就是两者之比最大的分配(因为长方形切成2个长方形是有2种方案的),无限递归下取就 OK了