Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 字符串操作算法_String_Algorithm - Fatal编程技术网

String 字符串操作算法

String 字符串操作算法,string,algorithm,String,Algorithm,我读入一组字符串,比如:aaa-bb-ccccc-ddd-eeee-fffff-ggggg。我需要一个算法的帮助,使这些字符串在尽可能少的行上匹配,一行上的最大字符数是一个固定值,例如15。如果向该行添加另一个字符串超过此值,我需要创建一个新行 我想搜索,找到最大的字符串,然后连接最小的字符串,然后连接下一个最大的字符串。。。诸如此类的方法都会奏效,但并没有达到我预期的效果,还有其他的想法吗 我需要的输出如下所示: aaa bb ddd EEE FFFFFFGGGGG 因为每行有15个字符,这是

我读入一组字符串,比如:aaa-bb-ccccc-ddd-eeee-fffff-ggggg。我需要一个算法的帮助,使这些字符串在尽可能少的行上匹配,一行上的最大字符数是一个固定值,例如15。如果向该行添加另一个字符串超过此值,我需要创建一个新行

我想搜索,找到最大的字符串,然后连接最小的字符串,然后连接下一个最大的字符串。。。诸如此类的方法都会奏效,但并没有达到我预期的效果,还有其他的想法吗

我需要的输出如下所示:

aaa bb ddd EEE FFFFFFGGGGG

因为每行有15个字符,这是你可能拥有的最小行数


我使用的是C sharp。

我认为您所做的是一个半贪婪算法,在这种情况下,它不会给您一个最优解。可以使用类似于带记忆的动态规划的方法来找到最优解。我想让你参考维基百科关于动态编程的文章中的例子。但是,为了给您一个大致的想法,您需要执行以下操作:

开始用一行字符(任意大小)填充一行 一旦你不能适应一个新单词,检查是否添加遗漏的单词“而不是”行中的一个单词会给你一个更好的填充引号。 如果是,请替换,如果不删除该单词,请尝试新单词。(我所说的新单词是指不同大小的单词,我假设您将所有大小相似的单词散列到相同的桶中)
尝试了所有尺寸后,您可以转到下一行,并执行相同的操作,但是,您还需要检查在第一行和第二行之间交换元素是否会获得更好的“总体”结果。实现这一点可以在n^2中完成,但有点棘手,如果你不太关心计算效率,就用这个蛮力吧。

你能更好地解释这个问题吗?你用什么语言工作?您想要什么形式的输出?DFS将是您的起点。谢谢,我将进行阅读,我需要将字符串输出到行中,行中字符的最大数量为15。我使用的是一个行列表,我只需要找出如何在一行中获得尽可能多的字符串,尽可能少的行。