求动态规划的一道题(pascal)

来源:百度知道 编辑:UC知道 时间:2024/05/24 20:19:45
【问题描述】
由苏州市科学技术协会创办的公益性质的青少年科学工作室,旨在通过参与、实践、体验的过程培养青少年的动手能力及创新意识。今年的夏令营安排了一个让营员动手实践的活动项目,要求利用该工作室提供的锯床和材料在辅导老师的指导下加工制作出各种不同的模型。
活动时两名营员组成一小组制作N个模型。制作每件模型需一定时间,且只能由一人完成。例如N=4时,四件模型完成的时间分别为:8,11,13,21分钟,此时二人有多种完成的方案:
方案一:A 制作前3件用时32分钟,B制作第4件用时21分钟,两人总的完成时间为32分钟;
方案二:A 制作1、4件用时29分钟,B制作2、3件用时24分钟,两人总的完成时间为29分钟。
在确定了N及每件模型制作时间后,现在请你找出一种完成时间最少的方案。
【输 入】:文件读入。第一行一个整数N ,表示N个模型(2≤N≤100)。
第二行N个整数(≤10000),表示制作N个模型的用时。数与数之间用逗号分隔。
【输 出】:输出到屏幕 。一个整数(表示最少用时)。
【样 例】:
输入 输出
3 21
12,18,9

我看过许多不同版本的题,意思都差不多。
这道题我学basic时就只对了一半,另一半超时。现在学了pascal,也会了动态规划,就记得那时老师就说这道题用“动态规划”解,谁能告诉我方法,
万分感谢!

就是经典的背包问题啊
先算出所有模型的制作总时间
然后除以二
得到的数值就是背包的容积
然后将模型的时间当成物品的体积和价值
将物品放入背包
使得背包剩余体积最小
此时背包里的物品的体积之和
就是,做得少的那个人用的时间
用总时间减去这个时间
就是做得多的那个人所耗时间
也就是左后答案