【发布时间】:2014-07-20 16:51:46
【问题描述】:
我想开发一种递归自动换行算法,它采用指定的字符串和换行长度(一行上的最大字符数)来返回输入长度的换行输出。我不希望它分解单词。例如,长度为 20 的 This is the first paragraph that you need to input 返回为:
This is the first
paragraph that you
need to input
我已经实现了一个动态编程(自下而上)解决方案,但我想知道是否可以编写一个算法来仅使用递归(自上而下)来执行此操作?如果可以的话,我也想记住它。请不要给我任何可运行的代码......我只是想知道想法/伪代码。
【问题讨论】:
-
带记忆的递归算法是(90%的时间)动态编程。
-
两件事:(1)您的包装要求到底是什么?最基本的包装算法根本不需要任何递归或 DP —— 只需继续在当前行添加单词,一旦超过行长,就返回一步。 (2) 从(可能是自下而上)DP 到递归很有趣——递归是你首先获得 DP 的方式!
-
另外,正如其他评论所说,这是通过一个非常简单的贪心算法解决的,这里不需要动态规划。
-
@j_random_hacker 仍然应该有一个 if 语句来检查 read 的单词本身是否大于行长,否则你永远不会写一行,你会只需写无限数量的换行符。
-
@BenjaminGruenbaum:我想更具体地说,我想知道是否有一种自上而下的方法,而不是我实施的自下而上的方法,如果这有意义的话。
标签: algorithm recursion word-wrap memoization