刚学数据结构,遇到以下问题.如果有兴趣的话,帮忙看一下(用C/C++编写)
仓库管理
背景介绍:
某工厂有一座仓库,而你是仓库的管理员,为了使你的仓库能够容纳更多的货物,你需要设计一种好的策略来入库和出库。
功能描述
假设仓库的大小为32×32, 货物的大小为1×1、2×2、4×4、8×8和16×16中的一种,而且所有相同大小的货物是同种类的。设计一种算法,尽可能充分的利用仓库的空间容纳货物。要求:
a)输入格式为[+/-]<num>,如:1,+2,-1,4,+16,以文本或图像方式表现出每次输入后的仓库的使用情况,默认使用文本方式即可,能够使用图像描述的可以获得加分。
描述方法举例:
_1_*_2_2_8_8_8_8_8_8_8_8_*……
_*_*_2_2_8_8_8_8_8_8_8_8_*……
_*_*_*_*_8_8_8_8_8_8_8_8_*……
_*_*_*_*_8_8_8_8_8_8_8_8_*……
_*_*_*_*_8_8_8_8_8_8_8_8_*……
_*_*_*_*_8_8_8_8_8_8_8_8_*……
_*_*_*_*_8_8_8_8_8_8_8_8_*……
_*_*_*_*_8_8_8_8_8_8_8_8_*……
……
其中“_”是为了使x,y方向保持间距接近,并没有实际意义;“*”表示空闲的空间;数字表示该货物的边长。
b)算法应使仓库的空间尽可能充分的利用。
c)如果仓库中无法找道足够大小的空间容纳货物,你将不得不对货物的位置进行调整,调整的时候,你可以不考虑货物间的相互阻挡,直接搬移货物到指定位置,但不能把货物移到仓库外面,即每时每刻货物总是必须在仓库中占据一定空间。
d)要求打印调整过程中搬运货物的动作和仓库最后的状态,格式如下:
move (X,Y, Size) to (X,Y,Size)
其中X,Y为货物左上角的坐标,Size 为货物大小。
调整货物是很麻烦的事情,应尽可能少的进行。如果经过调整仍然无法找到足够的空间,则拒绝货物入库。记录每次拒绝入库时的货物大小,仓库所剩空间,以及仓库此时所能容纳的最大货物大小,保存在文件log.txt中。
[此贴子已经被作者于2007-11-14 22:17:14编辑过]