这是算法导论动态规划一章的课后思考题
题目如下:
由给定的n个英文单词组成一篇文章,每个单词的长度(字符个数)依次为l1,l2...要在一台打印机上将这段文章漂亮的打印出来.打印机每行最多可打印M个字符.这里说说的漂亮定义如下:在打印机所打印的每一行中,行首和行尾可不留空格;行中每两个单词之间可留一个空格;如果在一行中打印从单词i到单词j的字符,则按照打印规则,应该在一行中打印sum(li,i<=i<j)+j-i个字符,且不允许将单词打破多余的空格数为M-j+i-sum(li,i<=i<j);除文章的最后一行外,希望每行多余的空格数目尽可能少,以每行多余空格数的立方和达到最小作为漂亮的标准(最后一行不算).
比如M=5
a︻bc︻
d︻ef︻
g(最后一行不算)
︻表示空格 总空余为1*1*1+1*1*1=2
最近一直在研究动规方面的问题,看到这道题后略一思索便想出了该问题的最优子结构:最后一行必定是从i到n,

本文介绍了如何使用动态规划解决算法导论中关于漂亮打印文章的问题。讨论了最优子结构、状态变量表示、边界条件处理,并给出了源代码实现。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



