一个算法的实现?!!
本人现在做一个关于排列的程序, 现有n个零件
1 将p1零件排放在板材的左下角
2 将pi(i=2,3,…,n)置于所有零件右边最大高度处,交替向下向左移动pi,首先尽可能向下移动,然
后再尽可能向左移动,直至pi无法向下向左移动为止(即接触到其他零件或板材边界为止
).
首先做了一个判断零件是否相交的函数bIntersectionInPartMgr().返回一个 bool值
下面是从零件p2开始的移动部分的程序:
//先向下移动
if (!bIntersectionInPartMgr()) {
while (!bIntersectionInPartMgr()) {
pt.y -= 5;
}
pt.y += 5;
}
if (!bIntersectionInPartMgr()) {
while (!bIntersectionInPartMgr()){
pt.x -= 5;
// 向下优先
if (!bIntersectionInPartMgr()) {
while (!bIntersectionInPartMgr()) {
pt.y -= 5;
}
pt.y += 5;
}
}
pt.x += 5;
}
在这个算法中每个零件移动的单位是5.整个材料的长度和宽度都为300.
我用这个算法执行起来问题很多,一个是计算时间较长,二是容易出错.
希望哪位高人能指点迷津!!!!! 谢谢!!!!!