关于一个立体空间的算法问题,请教高手,100分!

gbbword 2004-08-05 10:35:27
本人想在一个不知道有多大的空间内放入未知体积的物体(都是标准的长方体)
根据我所输入的空间的大小和物体的大小,在不改变物体尺寸的情况下如何得知熟该空间内所能放入的物体的个数(以填充满该空间为限),如果有多个不同尺寸的物体时在尽量多放的情况下怎么样才能计算出各个物体该放入几个呢!
希望各位能帮我,如果提出一种算法,本人愿单独给100分!
...全文
225 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
gbbword 2004-08-23
不知道你能不能提给点建议啊?
既然是“而已”那说清楚点不可以吗?
回复
yaos 2004-08-23
放料算法的3维版而已
回复
总共就9种组合,每种都算一遍就可以了,最多的,不就最好,当然可以进行个优化,我说的方法太笨
回复
konriuen 2004-08-22
如果空间最长的边和物体最长的边相比小于2,且中等和断边相比也小于2的话,那最多只能放一个。也就是说通过对应边的必来算出最多能放多少个,斜放等不可能放的最多。比如空间大小假设为(4,6,8)物体为(2,3,4)那么最多能放(4/2*6/3*8/4)个物体。
回复
programfanny 2004-08-13
up
回复
yelling 2004-08-12
先建一个3个分量的数组,分别是长方体的三个方向
用回溯可以算
一个一个放,回溯条件:放不下。
回溯:该长方体换一个方向,若换过两次,拿掉该长方体,前一个长方体换方向,若前一个长方体也换过两次,拿掉该长方体,……
结束条件:第一个长方体换完2次。

至于“多个不同尺寸的物体”,算法不好写,空间可以用三位数组来模拟。比如5*8*9.5的空间,用array[5][8][10]来模拟,多出的0.5存0.5,其余存1(根据不同量级可以改变每一位的值)。物体也一样。要对长方体从小到大排序。
长方体1大于2的条件为1长宽高都大于2。
如果序列中有k段长方体不可比,每一段都要以该段长方体的数量k.num(k.num==1不用排)做全排列。
比如,a1>a2,a3,a4>a5>a6,a7
就要构造12个序列,每个序列用一次回溯,计最大值。
因为没想多久,可能有漏洞。还有时间复杂度比较高。
回复
gbbword 2004-08-12
如果能给出代码者+100
给出思路+50
给出思路的有关资料的连接者+20
顶者也有分!
回复
uuq 2004-08-09
可以呀,不过前提是你要知道这个空间的界限。然后用碰撞检测算法来堆放。
每个物体向六个方向填充,标记填充数量啊。然后递归,直接不能放为止。
回复
cuixiping 2004-08-09
太复杂了。
每一个单独的物体的摆放姿势(暂不考虑放置位置)有3面×3姿势(3姿势:横放,纵放,斜放),一个空间里面可能有好几种姿势的物体摆放。
如果是刚好能填满没有空隙的话,最好算。有空隙的话就难算了。
回复
syy64 2004-08-07
这是一个体积求和和分解的问题,小学奥数就有讲的。
回复
zzwu 2004-08-06
这种问题没有什么巧妙的解决方法,只能根据具体情况来考虑一些启发性方法.
回复
gbbword 2004-08-06
不知道你能不能提点,那怕是一点也好啊,让我心里有个概念!
回复
gbbword 2004-08-05
自己再次UP!!UP!!
回复
gbbword 2004-08-05
自己UP!!UP!!
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-08-05 10:35
社区公告
暂无公告