您有12个形状:

你可以从五个相同的正方形中选出每一个。
你需要将这12个部分组合成一个矩形。您可以形成四个不同的矩形: 2339个解决方案(6x10),2个解决方案(3x20),368个解决方案(4x15),1010个解决方案(5x12)。

我需要构建3X20矩形:
我的问题是,可能的最大状态数(即分支因子)是多少?
我的中途计算:
在我看来,每个形状都有4个操作:旋转90度/180度/270度和镜像(将其倒过来)。然后,你必须把形状放在黑板上,在3X20黑板上的某个地方。非法状态将是形状不适合棋盘的状态,但它们仍然是状态。
对于第一步,你可以用4种方式选择每个形状,也就是4X12种方式,然后你需要乘以形状可以在的位置上的数量,这就是你拥有的状态的数量。但是我如何计算职位的数量呢?
请帮我做这个计算,这是非常重要的,这不是我想要避免的作业。
发布于 2012-06-24 18:21:32
我认为没有一种简单的、“智能”的方式来列出解决方案(或状态)。你必须尝试所有的可能性。递归编程或回溯就是这样做的。您应该检查这个solution,它也有可用的java源代码。希望这能为您指明正确的方向。
还有一个python solution,它可能更具可读性。
https://stackoverflow.com/questions/11176403
复制相似问题