这是一个面试问题而不是作业。
“将在Kindle中实现一项新功能。功能:用户输入他想要完成特定书籍的天数,Kindle将为用户创建阅读计划。 编写一个算法,将读数计划输出给用户。应该创建阅读计划,记住用户希望在同一天开始和结束阅读本书的特定“章节”。“
现在,阅读计划必须是最佳的,这可能意味着没有。人物或可能没有。每天要阅读的单词应尽可能在几天内公平分配。
现在,我们并不知道Kindle如何在后端存储这些图书,但我认为可以安全地假设我们可以轻松获取以下数据 -
我真的无法找到具体的解决方案。有人请帮忙。
答案 0 :(得分:1)
这可以看作是换行的变种。只有这里一个单词是整章,行是天,你还不知道行宽(每天的单词数)。
它有一些非常不同的算法,从一个微不足道的"尽可能多地填充每一行"动态编程和SMAWK。
您可以通过单边二分搜索找到线宽,您也可以先估算它,因为它应该接近total words / days
(当然不会更小,希望不会大得多)。
不是 k - 分区问题的变体,因为章节(大概)不会形成一个集合而是一个序列,并且必须按顺序阅读。因此问题只是在该序列中插入断点,这更容易。