Foxtable(狐表)用户栏目专家坐堂 → 实际工作中遇到逻辑规律性问题,求助全体人员帮忙


  共有2640人关注过本帖树形打印复制链接

主题:实际工作中遇到逻辑规律性问题,求助全体人员帮忙

帅哥哟,离线,有人找我吗?
ljh29206
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1368 积分:12183 威望:0 精华:0 注册:2012/3/5 11:32:00
实际工作中遇到逻辑规律性问题,求助全体人员帮忙  发帖心情 Post By:2015/6/17 15:50:00 [只看该作者]

我有   2种货物

 

分别:  长100cm.*宽100cm*高33cm

           长100cm.*宽100cm*高22cm

 

我要把 这2种货物(总数量少于15个) 拼合在 一个。 

 

 长200cm.*宽200cm 

(1个底层 放置4箱货,  33,22 不同高度箱体 可以 堆叠在一起)

的托盘上。

 

 

需要  把 这些东西构成 一个平面,不足平面的部分用空箱填补。 

 

请问 如何 计算  空箱的填补数量

 

空箱的规格有以下3种

           长100cm.*宽100cm*高33cm

           长100cm.*宽100cm*高22cm

           长100cm.*宽100cm*高11cm

 

 

想了很久,没知道如何计算公式。。。。。。。

 

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/17 18:12:00 [只看该作者]

 呃,本来觉得是挺简单的事情,后来想复杂了图片点击可在新窗口打开查看

 

 扩展开去,是一个很难的问题,时间问题,最后只能用取巧的方法处理....

 

 如果列举所有的可能性,耗时耗力,偷懒用随机的方式做,多运行几次就能得到答案了

 

 红色代码自己改

 

'随机叠箱子
Dim cm33 As Integer = 9
Dim cm22 As Integer = 5

Dim arys(cm33+cm22-1) As Integer
For i As Integer = 0 To cm33-1
    arys(i) = 33
Next
For i As Integer = cm33 To cm33+cm22-1
    arys(i) = 22
Next

Dim min As Integer = 99999
Dim answer As String = ""
For i As Integer = 1 To 100 '随机100次结果
    Dim sum(3) As Integer
    For j As Integer = 1 To 20 '打乱数组20次
        Dim r1 As Integer = Rand.Next(arys.length-1)
        Dim r2 As Integer = Rand.Next(arys.length-1)
        Dim temp As Integer = arys(r1)
        arys(r1) = arys(r2)
        arys(r2) = temp
    Next
    Dim str As String = ""
    For k As Integer = 0 To arys.length - 1
        Dim idx As Integer = k Mod 4
        sum(idx) += arys(k)
        str &= arys(k) & ","
    Next
    Dim max As Integer = sum(0)
    For k As Integer = 1 To sum.length - 1
        If sum(k) > max Then max = sum(k)
    Next
    Dim diff As Integer = max-sum(0)+max-sum(1)+max-sum(2)+max-sum(3)
    output.show(str.trim(",") & " 各边:" & cstr(sum(0)) & " " & sum(1) & " " & sum(2) & " " & sum(3) & " 相差:" & diff)
    If diff < min Then
        min = diff
        answer = str.trim(",") & " 各边:" & cstr(sum(0)) & " " & sum(1) & " " & sum(2) & " " & sum(3) & " 相差:" & diff
    End If
Next

msgbox(answer)


 回到顶部
帅哥哟,离线,有人找我吗?
don
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2015/6/17 18:30:00 [只看该作者]

確實很難!如規格不統一就更難了

 回到顶部
帅哥哟,离线,有人找我吗?
ljh29206
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1368 积分:12183 威望:0 精华:0 注册:2012/3/5 11:32:00
  发帖心情 Post By:2015/6/18 9:39:00 [只看该作者]

非常感谢版主的帮忙,

 

这个不是 foxtable的 语音问题

 

但版主能这么热心 ,太谢谢了

 

我测试一下先!


 回到顶部