【发布时间】:2016-03-17 19:35:03
【问题描述】:
我最近遇到一个问题,我被赋予了两种类型的人:左撇子和右撇子(写作风格)。他们都必须排成一排,为了避免任何干扰,他们的手不得碰撞,即图案可能像 LR 或 LL 或 RR。
我尝试使用递归(每个座位采用 L 和 R 的两个分支),但即使对于 100 行大小,计算数量也会非常高。
不知何故,我需要实现 DP 来减少计算。请建议。
编辑:
实际上有一个矩阵(就像一个教室),其中三种类型(L R B)的人可以在没有手碰撞的情况下就座。我必须生成可以坐下的最大人数。假设我有一个 2x2 矩阵,并用左手、右手和双手类型的人 L=0、R=1、B =3 来填充它。因此,一种有效的安排是第 0 行:B R 和第 1 行:B -,其中- 表示空白座位。
【问题讨论】:
-
那个问题问的是什么问题?您只说明了限制条件。如果您只想要一些有效的座位,只需将所有左撇子都放在左边。
-
问题需要在给定 L 和 R 的情况下容纳最大可能的人数。如果我们有同时使用双手的人会发生什么?
-
“双手”没有出现在你的问题中,我仍然认为将所有左撇子放在左边,把右手放在右边没有问题。没有什么可优化的,它会填满整排或让所有人坐下,以先到者为准。
-
我已经编辑了这个问题。我试图填写这个矩阵。
-
好吧,现在看起来更像是一个实际问题了。
标签: algorithm optimization dynamic-programming combinatorics