【发布时间】:2011-07-27 21:52:38
【问题描述】:
我正在尝试获取长度在 1 到 10 之间的字符串,并输出将字符串分解为大小为 1、2 或 3 的连续子字符串的所有可能方式。例如:
Input: 123456
将整数切成单个字符,然后继续查找组合。 该代码将返回以下所有数组。
[1, 2, 3, 4, 5, 6]
[12, 3, 4, 5, 6]
[1, 23, 4, 5, 6]
[1, 2, 34, 5, 6]
[1, 2, 3, 45, 6]
[1, 2, 3, 4, 56]
[12, 34, 5, 6]
[12, 3, 45, 6]
[12, 3, 4, 56]
[1, 23, 45, 6]
[1, 2, 34, 56]
[1, 23, 4, 56]
[12, 34, 56]
[123, 4, 5, 6]
[1, 234, 5, 6]
[1, 2, 345, 6]
[1, 2, 3, 456]
[123, 456]
[1, 23, 456]
[1, 234, 56]
[12, 345, 6]
[12, 3, 456]
[123, 4, 56]
[123, 45, 6]
我正在尝试在 ruby 中执行此操作。谢谢!
【问题讨论】:
-
到目前为止你尝试过什么?
-
输入需要被分解成最大大小为 3 的块。例如 [1234,5,6] 不起作用,因为第一项太大。我一直在研究排列和组合,但不知道如何获得包含不同大小块的排列(有些带有 1 个字符,有些带有 2 个字符,有些带有 3 个字符)。我也开始研究决策树,但还没有走多远。
-
@Richard:这与排列无关。排列是重新排序。您将数字保持在相同的顺序。
-
@Peng -- 你是对的。但我想知道排列是否真的会最终出现在解决方案中,倾斜地......仍在思考,但我已经很晚了......
-
@Andy:绝对不是。他只需要找到断线的位置。这里没有任何东西被置换。他有 9 个位置供
,s 去,并且想选择它们,以便它们之间最多出现 3 个数字。数字保持有序。