我一直在研究优化问题,这需要我找到给我最长河流的文字宽度。河流被定义为一系列空间,它们在不同的行中仅由1个或更少的字符分隔。例如,我有以下文字:
这是图像,红色“x”表示河流。
- >河流是不同行中的一系列空间,由左边,右边或没有一个字符分隔。我们想要最长的一切。
文本必须与左侧对齐,而不是右侧,如果不适合,则不能分割单词。
我一直在尝试使用每个单词的长度,而不是所有字符序列,以便更好地执行,但我无法以这种方式解决问题。我只能考虑测试所有可能性(最小宽度是最长单词的长度),并获得更好的可能性,但我不认为这在时间和空间上都是有效的。
我不想让你解决这个问题,我只是想知道你是否认为它可以用另一种方式解决。谢谢!
答案 0 :(得分:1)
嗯,我觉得没有必要说 是的,你可以 没有一些提示,所以在这里你有......
我相信你应该从定义你所知道的基本问题的规则开始:
假设:
你仍然需要找到最长单词的长度,但这只是设置最小宽度开始。
所以,你知道:
length of the whole string - length of the last two words - 1
(1
是最后两个单词之间的空白)除以2
。通过这些假设和 事实 ,您可以简单地将文本循环部署到矩阵(每个单元格中包含一个字符)并逐行检查河流符合规则。
答案 1 :(得分:0)
你不能让这个alghoritm更有效,因为我没有看到你可以使用的任何模式“我不必尝试这个线宽,它不会给我比这个线宽更好的结果。”
所以基本上你必须尝试找到所有线宽的所有解决方案,并采取最好的。唯一的优化是当你从最小的线宽开始到更大的线宽时,你会发现河流的长度超过了将会出现的行数 - 那么你就不必继续了。
例如 - 如果您发现最长的河流有4个值并且您的线宽达到4行,您可以停止它,因为您无法找到更长的河流。