用于在打印机上整齐打印段落的算法

dat*_*ili 1 algorithm formatting text

首先,这不是家庭作业,所以请不要将其标记为homewrok

我不明白这个问题.任何人都可以向我解释一下吗?这不是我不理解的英语,而是问题的一般要点.

alt text http://i47.tinypic.com/20jnwck.png

Rus*_*sty 5

我解决这个问题的方法是什么?...当然宝贝......在这里,你可以去银盘子上.

[1]谷歌搜索说:考虑在打印机上整齐地打印段落的问题

[2]选择说~10个不明显的谷壳的网站.

[3]快速查看网站上的源代码...选择一些结构良好且有大量注释的代码.

[4]将它放入visual studio ..编写一些删除算法的quciky代码.

[5]遵循代码流程并将其与所述问题进行比较.

[6]手动检查一些结果.如果他们失败转到第3步.

[7]运行代码直到您了解它是如何工作的.

在那里你去......如何在7个无痛的步骤中学习任何东西.

周围的饮料......

我可以再给你一杯鸡尾酒吗?

这是你幸运的一天...我心情很好......所以,这里有一个伪代码....来自第一个 谷歌点击 ...甚至有行号,所以你可以提出有关具体的问题线......荣耀的日子...... grrrr.

Lets assume that for all k s where 1 <= k <= n lk < M. PRINT_NEATLY is a bottom-up dynamic-proramming algorithm for the above recursive equation.
Lets create another array lineend[n] to record the end of line word number.


PRINT_NEATLY(n, M, l)
1   for i  <-- n to 1
2       p <-- i
3       CharsLeft <-- M - lp
4       while (CharsLeft - lp+1 -1) > 0 and p < n
5           do  CharsLeft <-- CharsLeft - lp+1 - 1
6                   p <-- p + 1
7       if p = n
8           then c[i] <-- 0
9                   lineend[i] <-- n
10          else
11              c[i] <-- a big number, probably the Maximum nuber for this type.
12              sum_lk <-- 0
13              for j <-- i to p
14                  sum_lk <-- sum_lk + lj 
15                  cost <-- ( M -j + i - sum_lk )3 + c[j+1]
16                   if  cost < c[i]
17                       then c[i] <-- cost
18                               lineend[i] <-- j 

19    // Print paragraph
20    start <-- 1
21    while start <= n
22        do
23            for word <-- start to lineend[start]
24                print  ln
25            print newline
26            start <-- lineend[start] + 1
Run Code Online (Sandbox Code Playgroud)