一道算法题。求高手!重谢

寒飞a 2011-12-04 11:30:37
是一个关于利用率问题的题目

在一个大矩形里 切割 一个 或者 多个规格 的小矩形 ,怎么样切大矩形的利用率是最高的 。
...全文
230 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
moon___star 2011-12-04
  • 打赏
  • 举报
回复
动态规划来做,效果一定不错。
寒飞a 2011-12-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 litaoye 的回复:]
规格不多的话可以枚举,如果有几十个,恐怕就很难算了。


引用 3 楼 luoyehanfei 的回复:
引用 2 楼 litaoye 的回复:
问题本身是NP的,只能找些近似的方法,当然矩形数量不多的情况系可以考虑枚举

把大矩形 和 所要切的规格当作参数传入 。它们既然都有尺寸和数字,应该是能求出最优良的切法的吧。
[/Quote]

嗯,我就是想看看能不能解决这个算法。
绿色夹克衫 2011-12-04
  • 打赏
  • 举报
回复
规格不多的话可以枚举,如果有几十个,恐怕就很难算了。

[Quote=引用 3 楼 luoyehanfei 的回复:]
引用 2 楼 litaoye 的回复:
问题本身是NP的,只能找些近似的方法,当然矩形数量不多的情况系可以考虑枚举

把大矩形 和 所要切的规格当作参数传入 。它们既然都有尺寸和数字,应该是能求出最优良的切法的吧。
[/Quote]
寒飞a 2011-12-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 litaoye 的回复:]
问题本身是NP的,只能找些近似的方法,当然矩形数量不多的情况系可以考虑枚举
[/Quote]

把大矩形 和 所要切的规格当作参数传入 。它们既然都有尺寸和数字,应该是能求出最优良的切法的吧。
绿色夹克衫 2011-12-04
  • 打赏
  • 举报
回复
问题本身是NP的,只能找些近似的方法,当然矩形数量不多的情况系可以考虑枚举
寒飞a 2011-12-04
  • 打赏
  • 举报
回复
我用js写了一段代码 来分页这个题目的需求。大家可以看下,不喜勿喷。 求优良的算法。。。。。。。。。。。。。。
//算法 问题:一张纸按照指定的一个或多个规格分切,怎么样利用率最大 ?

//重点1 :规格分为1个或者多个
//重点2 : 如果是多规格 ,有没有指定没种规格最少需要多少呢 ?还是直接按照最优的切出来就行 ?

/**********函数体************/
//需要准备的参数 ?1 纸张对象 (对象具备宽高属性)
// 2 要切的纸张规格对象 ? 因为具备多种规格,此对象为数组。
// (每个数组的成员为一个对象 具备宽高属性 另,具备一个最少切割数属性)
// oldobj设置 x y属性
//objpar的每个成员有x y 和 conts 属性 x y 表示宽高 conts 表示最少切割数
//分析: 所切矩形面积之和
function Cutpager(oldobj, objpar) {
//首先我们获取原始纸张的宽和高
var owidth = oldobj.x;
var oheight = oldobj.y;
var par = new Array();//此数组用来记录刚好切完的单个最优规格。
//首先我们确定下 如果切完的规格刚好为0.那么此种算法肯定利用率就最大。我们先来一个循环

var iszerno = 0;//记录是否有最小切割数不能为0的 。此时的0是记录有几个最少切割数不能为0的。
for (var i = 0; i < objpar.length; i++) {
//在进行此项操作的时候我们必须要判断,判断对象的最小切割数是不是0,如果规定了必须最少切多少个,肯定不能这样算。
if (objpar[i].conts != 0) { //如果当前对象最小切割输
iszerno++;
}
}
//当循环体执行完毕的时候我们就知道是否有不为0的了。
if (iszerno == 0) { //如果所有的规格并没有规定最少应该切多少个。
//执行第一种排查 将每个规格的元素逐个排查,看能否刚好切割完大的矩形,那么我们就只切这一种纸了。
//这里我们应该做一个正则表达式 来判断一个为正整数的数组 ,还是执行循环。
//循环规格数组
for (var i = 0; i < objpar.length; i++) {
//这里应该把当前规格直接与大的矩形想对比 以 owidth*oheight/(objpar[i].x*objpar[i].y) 判断此值是否为正整数
if ((owidth * oheight) % (objpar[i].x * objpar[i].y) == 0) {
par.push(objpar[i]);
}
}
}
else if (iszerno == 1) {
//这里要考虑规格当中如果只有一种有最少要求切割数。那么它也可以当作唯一的规格来切割。
}
else {
//这里当然就是最少有2个规格都是有最少需要切割的数量,此时,要进行更为复杂算法。
}

}
SuperFC 2011-12-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sanyloveyou1 的回复:]

动态规划来做,效果一定不错。
[/Quote]

我认为DP在这用不好,还是得用纯数学的知识解决。
内容概要:本文是一份系统性的AI Agent学习教程,涵盖从认知到实战的17个章节,全面讲解了AI Agent的核心知识体系。教程围绕八大核心模块展开:Prompt工程、Workflow工作流、Tool Calling工具调用、Memory记忆系统、RAG与知识库、Planning任务规划、Multi-Agent多智能体以及框架选择。通过理论讲解、案例分析和实战项目(如食品采购系统、内容矩阵、小说工厂),帮助学习者掌握如何设计、构建和部署完整的AI Agent系统。; 适合人群:具备一定AI工具使用经验(如ChatGPT、Claude)的研发人员、产品经理和技术爱好者,希望从AI使用者进阶为AI系统设计者和架构师;特别适合有1-3年工作经验、有志于转型AI Agent开发的从业者。; 使用场景及目标:①理解AI Agent与普通AI的核心区别,掌握其“感知-决策-行动-反思”的闭环工作模式;②系统学习并实践Agent的八大核心能力,特别是Workflow工作流设计这一能力分水岭;③完成从食品采购到多智能体协作的三大实战项目,最终能够独立设计和部署企业级AI Agent应用。; 阅读建议:本教程强调“以项目驱动学习”,建议严格按照“理解本质→掌握Prompt→设计Workflow→实现工具调用→集成记忆与知识→规划任务→多智能体协作”的学习路径进行。务必边学边做,利用配套的12个Skill进行动手实践,并在学习过程中不断对照避坑指南,避免陷入“只学不做”、“过度追新技术”等常见误区。
随着我国科普教育事业快速发展与公众科学素养需增长,传统图文展示、静态讲解的展馆科普模式已难以满足青少年对互动性、趣味性和参与感的需。体感交互通过摄像头实时捕捉人体动作,无需手持控制器即可自然互动,沉浸感与参与感显著优于键鼠操作,为科普体验升级提供新的技术路径。本文设计并实现面向科技馆、展馆场景的体感互动科普教育小游戏系统。 系统利用Kinect捕捉人体骨骼动作,以体感闯关方式完成科普学习与娱乐;将知识点与具象化体感动作深度绑定,实现"边动边学";针对不同年龄段设计难度适配机制,动态调整动作难度与内容深度,兼顾儿童、青少年与成人;并基于多骨骼追踪预留多人互动能力。系统采用Unity 2022.3 LTS与C#,结合Kinect SDK获取骨骼数据,采用UGUI搭建界面,通过JSON数据驱动关卡与知识点配置,整体采用MVC分层架构及单例、状态机、事件驱动等设计模式。 系统按功能划分为五模块:体感识别负责Kinect接入、骨骼获取与姿态捕捉;动作判定负责动作库维护、动作匹配与相似度评估;关卡科普负责关卡流程控制与知识讲解;计分系统负责得分、连击判定与星级评价;UI展示负责主界面、关卡界面与操作引导。测试表明,动作识别准确率达90%以上,判定延迟不超过300毫秒,界面响应不超过200毫秒,关卡加载不超过2秒,连续运行稳定,目标年龄段用户接受度达85%以上。系统实现科普动作深度融合、分年龄段难度自适应、多骨骼多人互动预留与数据驱动关卡框架等创新,为场馆科普互动提供可落地、易扩展方案。 【课程报告内容】 摘要 第1章 绪论 第2章 相关技术与理论 第3章 系统需分析 第4章 系统总体设计 第5章 系统详细设计与实现 第6章 系统测试与分析 第7章 总结与展望 参考文献 附件-实现指南

33,025

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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