可以从一维的开始讨论.我仔细想了下,二维的蛮麻烦的(好像不能用动态规划,也可能我水平不够,三维的就更复杂了
) 先把问题转为一维吧
转化后问题:
有一个停车带 长度为N(整数) 现有各种长度的车辆 问如何停可以使停放的车辆最多 如何停使停放的长度最长?
问题一解答:使用贪心算法,总是挑选长度最短的车辆.
推广到二维,可以选择面积最小的那个,三维就是体积最小的那个,可以得到最优近似解,但不能保证最有解,可以通过修改选择方案增加准确率.
问题二解答:一般使用回溯法遍历所有可能就能得到最优解(问题一也可以使用遍历获得精确解),但时间复杂度较高.使用动态规划可以高效的求解,动态规划请参考http://iprai.hust.edu.cn/icl2002/algorithm/algorithm/technique/dynamic_programming/
推广到二维的话使用遍历仍然可以得到最优解,但时间复杂度更高,使用减枝方案在过程中删掉明显不可能的解.使用贪心法可以得到近似最有解,即每一次都挑选尽可能大的箱子.但似乎不能使用动态规划,因为放入箱子的位置会影响答案,而在一维的状况下不会发生这种状况.
总之,原题在小规模的状况下可以使用遍历法,并配合减枝,可以得到精确解.大规模的情况下,使用贪心法并优化贪心的选择方案,可以的到近似解.
能力所限,只有这样了