最佳阅读计划

时间:2015-02-13 18:19:39

标签: algorithm data-structures

这是一个面试问题而不是作业。

“将在Kindle中实现一项新功能。功能:用户输入他想要完成特定书籍的天数,Kindle将为用户创建阅读计划。 编写一个算法,将读数计划输出给用户。应该创建阅读计划,记住用户希望在同一天开始和结束阅读本书的特定“章节”。“

现在,阅读计划必须是最佳的,这可能意味着没有。人物或可能没有。每天要阅读的单词应尽可能在几天内公平分配。

现在,我们并不知道Kindle如何在后端存储这些图书,但我认为可以安全地假设我们可以轻松获取以下数据 -

  1. 否。书中的章节
  2. 每章的开始和结束点
  3. 否。每页或每页中的页数或字数或字符数等
  4. 我真的无法找到具体的解决方案。有人请帮忙。

1 个答案:

答案 0 :(得分:1)

这可以看作是换行的变种。只有这里一个单词是整章,行是天,你还不知道行宽(每天的单词数)。

它有一些非常不同的算法,从一个微不足道的"尽可能多地填充每一行"动态编程和SMAWK。

您可以通过单边二分搜索找到线宽,您也可以先估算它,因为它应该接近total words / days(当然不会更小,希望不会大得多)。

不是 k - 分区问题的变体,因为章节(大概)不会形成一个集合而是一个序列,并且必须按顺序阅读。因此问题只是在该序列中插入断点,这更容易。