【问题标题】:Algorithm for neatly printing a paragraph on a printer在打印机上整齐打印段落的算法
【发布时间】:2010-06-05 07:05:18
【问题描述】:

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

我不明白这个问题。谁能给我解释一下?不是我不懂的英文,而是问题的大体。

【问题讨论】:

  • 您是否考虑过为您的问题使用描述性标题?
  • 您对这个问题有什么具体问题吗?
  • 如果不是“homewrok”,那是什么?
  • 问题只是我不明白的问题
  • 最初出自《Thomas H. Cormen 的算法导论》一书,被很多懒惰的老师抄袭。

标签: algorithm text formatting


【解决方案1】:

我解决这个问题的方法?...当然,宝贝....来吧..盛在银盘上。

[1] Google 搜索say:考虑在打印机上整齐打印段落的问题

[2] 挑选约 10 个不明显的谷壳网站。

[3] 快速浏览网站上的源代码...选择一些结构良好且包含大量 cmets 的代码。

[4] 将其弹出到 Visual Studio..编写一些删除算法的 quciky 代码。

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

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

[7] 运行代码,直到您了解它的工作原理。

你去吧..如何在 7 个无痛步骤中学习任何东西。

到处都是饮料……

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

今天是你的幸运日......我心情很好......所以,这里有一个小伪代码给你......来自first Google hit...甚至还有行号,因此您可以就特定行提出问题...光辉岁月...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

【讨论】:

【解决方案2】:
  • 该算法应该“整齐”地打印段落
  • 行尾(除了末尾)的填充空间不是“整齐”的
  • 因此,算法应尽量减少此类填充
  • “整洁”的准确度量是每行上填充的平方和(一种非常常见的复合错误度量,这基本上意味着有许多小错误比几个大错误更容易接受)。

【讨论】:

  • +1,但它实际上要求填充 cubes 的总和,而不是平方和。 (我想这使得它更不可能产生有大间隙的线条。)
猜你喜欢
  • 1970-01-01
  • 2011-07-05
  • 2012-10-05
  • 1970-01-01
  • 2022-06-10
  • 2022-01-02
  • 2012-11-11
  • 1970-01-01
相关资源
最近更新 更多