首页 > 解决方案 > 检查多米诺骨牌金字塔的有效性

问题描述

我在一次编码面试中遇到了这个问题,但无法找到一个好的解决方案。

给你 6 张多米诺骨牌。多米诺骨牌有两半,每半都有许多点。您正在构建一个 3 级的多米诺骨牌金字塔。底层有3个多米诺骨牌,中层有2个,顶层有1个。

这种布置方式使得每一层都位于其下一层的中心之上。这是一个视觉效果:

         [ 3 | 4 ]
    [ 2 | 3 ] [ 4 | 5 ]
[ 1 | 2 ][ 3 | 4 ][ 5 | 6 ]

必须设置金字塔,使得每个多米诺骨牌一半上的点数应与其下方一半上的点数相同。这不适用于同一级别的相邻多米诺骨牌。

是否可以按照上述排列从 6 块多米诺骨牌构建金字塔?多米诺骨牌可以自由排列和旋转。

编写一个接受 12 个整数数组的函数(例如,arr[0]、arr[1] 是第一个多米诺骨牌,arr[2]、arr[3] 是第二个多米诺骨牌,等等)并返回“YES”或如果可以用给定的 6 块多米诺骨牌创建金字塔,则为“否”。

谢谢你。

标签: algorithmdata-structures

解决方案


你可以做得比暴力破解更好。我没有时间给出完整的答案。所以这更像是一个提示。

计算每个数字出现的次数。对于至少两个数字,它应该至少为 3,依此类推。如果不满足这些条件,就没有解决方案。在接下来的步骤中,您需要考虑数字在图块上的位置。


推荐阅读