这是我发现的一个非常有趣的 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 页,然后您尝试将堆栈中最接近该数字的连续书籍提供给每个作者,但这对于大页码根本不起作用,特别是如果一本书的页数超过总页数页数除以作者数
因此,如果您愿意,请分享您的意见并提供提示和提示,数学或其他,这是一个非常有趣的算法!