【发布时间】:2012-04-28 17:05:40
【问题描述】:
这是我发现的一个非常有趣的 java 问题:
在发现书籍印刷之前,书籍是由某些称为“作家”的人复制的。 簿记员有一叠 N 本书需要复制。为此,他有 K 个作家。每本书可以有不同的页数,每个作者只能从堆栈顶部取书(如果他取书 1,那么他可以取书 2,但不能取书 4 或书 5)。簿记员知道每本书的页数,他需要在作者之间共享书籍,以使作者必须复制的最大页数尽可能少。例如,当然不能拆分页面你不能把一本 30 页的书分成 15 页和 15 页。
例如,如果我们有 7 本书,有 3 位作者,并且相应的书籍页数为:30 50 5 60 90 5 80,那么最佳解决方案是第一位作者拿前 4 本书,第二位作者拿下一本书,然后最后两本书的第三个,所以我们会有:
第 1 = 145 页
第 2 = 90 页
第 3 = 85 页
所以程序是编写一个算法来找到在作者之间共享页面的最佳解决方案。因此,在程序结束时,您必须显示每个页面有多少页。
这是几年前的一次编程比赛,我想试一试,到目前为止我发现如果你把所有书籍的总页数除以你的作者数量在示例中获取 106.66 页,然后您尝试将堆栈中最接近该数字的连续书籍提供给每个作者,但这对于大页码根本不起作用,特别是如果一本书的页数有超过总页数除以作者人数
因此,如果您愿意,请分享您的意见并提供提示和提示,数学或其他,这是一个非常有趣的算法!
【问题讨论】:
-
“所以程序是编写一个算法,找到在作者之间共享页面的最佳解决方案。”
-
换句话说,哪些书给了哪个作家,但页面是最重要的,所以每个人最终会有多少页
-
@SiliconTouch:所以你是在找人为你写算法?
-
根据常见问题解答,“分享您的意见”-问题不好,因为很难找到“正确答案”。
-
顺便说一句:据我了解,您的示例是错误的(在撰写本文时,它指出:30 50 5 60 90 5 80->85/150/85 当正确答案是 145/90/85 时)问题。
标签: java algorithm stack division