我想到了一道算法测试中的问题。这个问题是关于一个男孩写文章的,他希望最大化以字母'r'结尾的行数,因为他认为这样会在文章上获得更高的分数(什么...)。
无论如何,文章的限制是每行的最后72-80个字符需要有一个字母,除非包括下一个单词会超过80个字符(例如,如果添加下一个单词会使该行具有80个以上的字符,则可以在72-80个字符位置没有字母的情况下保留该行),或者它是最后一行(最后一行可以少于72个字符)。
例如,如果限制是10-15而不是72-80,那么格式应如下所示:
有没有一种高效的算法,可以在保持72-80字母限制的同时最大化以字母“r”结尾的行数?我们不能切割整个单词来使得行以“r”结尾。
我尝试使用的算法如下:
使用这种10-15的约束条件的算法将得到:
但最佳解决方案应该是:
Sorry.
无论如何,文章的限制是每行的最后72-80个字符需要有一个字母,除非包括下一个单词会超过80个字符(例如,如果添加下一个单词会使该行具有80个以上的字符,则可以在72-80个字符位置没有字母的情况下保留该行),或者它是最后一行(最后一行可以少于72个字符)。
例如,如果限制是10-15而不是72-80,那么格式应如下所示:
123456789012345
The slow blue
dog is
entertaining
有没有一种高效的算法,可以在保持72-80字母限制的同时最大化以字母“r”结尾的行数?我们不能切割整个单词来使得行以“r”结尾。
我尝试使用的算法如下:
- 从第72个字符开始,检查当前行的72-80个字符是否包含字母“r”。
- 如果72-80个字符中没有字母“r”,则尽可能填满该行并转到下一行。
- 如果72-80个字符中有字母“r”,则结束该行。
- 重复步骤1直到没有更多的行。
使用这种10-15的约束条件的算法将得到:
123456789012345
The man was in
the backgarden
or the yard
但最佳解决方案应该是:
123456789012345
The man was
in the
backgarden or
the yard
Sorry.