DearDelphi请教(开料算法)

deardelphi 2000-07-26 08:24:00
DearDelphi(海晴)请教大虾们一个算法问题
请不要吝啬您的才智。

开料算法
_____________________________________
I I I
I I I
I Unit Iy I
I I I
I______________I I
I x I b
I Set I
I I
I I
I I
I____________________________________I
a

如图所示,如输入 Set 和 Unit 的长宽分别

为 a,b;x,y; 问一个 Set 最多可容纳多少个

Unit ? 如何排放 ?
...全文
277 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
deardelphi 2000-08-26
  • 打赏
  • 举报
回复
如何删除?
shylsz 2000-08-26
  • 打赏
  • 举报
回复
象这种帖子自己已经搞定了,不知能不能删除这张帖子呢
deardelphi 2000-08-26
  • 打赏
  • 举报
回复
已经被我搞定了。
deardelphi 2000-07-30
  • 打赏
  • 举报
回复
海晴谢谢大家的关注,是实上meijg和pjy的方法都不行,如Unit=5*5,Set=9*9呢?而pjy没有把不同的排法考虑进去,得不到最优解。但也无Wingsun认为的那么复杂,Set 中的所有 Unit 大小一致,Unit 排法无特殊要求,横竖皆可,但要最多。

Wingsun 2000-07-27
  • 打赏
  • 举报
回复
不对,你的情况不应该如此简单。肯定是很多个Unit,他们的x,y均不同,你可以先从最大面积的开始排列,然后将剩下的面积分为3个分重复计算,将其计算简化。总而言之,从大到小不断分割。
pjy 2000-07-27
  • 打赏
  • 举报
回复
没有如此简单,应该使用round(a/x) * round(b/y)。ROUND函数根据你选定的数据库可能有区别,意思是取整。
deardelphi 2000-07-27
  • 打赏
  • 举报
回复
海晴谢谢大家的关注,补充一下:这是一个在制造业普遍存在的工程工序和算法问题。
Unit 的 x 和 y ,Set 的大小 a,b 可由用户实时输入。
(1)可排放多少个?
(2)如何排?(由程序完成)。
meijg 2000-07-27
  • 打赏
  • 举报
回复
先算出Set的面积x*y,在算出Unit的面积a*b,然后用Set div Unit=数量
接着就可以排放了
Tyro 2000-07-27
  • 打赏
  • 举报
回复
呵呵……这应该是个很经典问题呀!:)
Tommy Chang 2000-07-27
  • 打赏
  • 举报
回复
呵呵,恐怕问题并没有大家讲得这么简单,在运筹学里面专门有一套解决的办法,但都不是直接求最优解,常见的求最优解算法就是搜索、贪心,近似解的办法就挺多的。不过,加点限制后就很好求解了。

:)
fyje 2000-07-27
  • 打赏
  • 举报
回复
这个算法应该是取b/y和a/x整除后值的最小值就是了.

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧