假设我有一个1和0的矩阵,我希望这个矩阵的'标识符'取相同的值,无论矩阵是旋转90度,180度还是270度,即4到-1映射。理想情况下,此标识符应为矩阵大小的1/4。是否可以编写一个执行此映射的函数?

背景:我在UVa问题集上查看此问题 。我并不需要这样的功能来解决这个问题,但它确实存在似乎是合理的,并且使用它可以提供更优雅的解决方案。

有帮助吗?

解决方案

是。您可以使用原始矩阵A,并将其旋转到所有可能的配置A',A''和A'''。然后你可以使用你选择的一些排序(只是保持一致)对它们进行排序,选择第一个,并使用你选择的任何哈希函数进行哈希(再次,实际的哈希函数无关紧要,只需保持一致)。

显然,这可以通过不实际进行完全旋转和排序来进行大量优化 - 您可以懒惰地进行比较,一旦知道哪个旋转首先排序就停止 - 但原理是相同的。

其他提示

你可以对所有旋转进行异或,这将是一个对称的标识符。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top