【问题标题】:function to find out how many magic squares are in rectangle made of n*m, where n,m - natural numbers找出由 n*m 组成的矩形中有多少个幻方的函数,其中 n,m - 自然数
【发布时间】:2014-11-19 14:47:09
【问题描述】:


我需要编写一个算法来解决这个练习,有什么建议吗?

运动:

我们有一个矩形,分为 n x m 个正方形,带有自然数。编写一个函数来计算这个矩形内有多少个魔方。

幻方是 kxk (k>=2) 个数字(通常是整数)在方格中的排列,其中每行和每列中的数字以及主对角线和辅助对角线中的数字,所有加起来是同一个数。

【问题讨论】:

  • “不同的数字”那么 6,6,6,6 不应该是魔法吗?
  • 我编辑了帖子,数字不必不同
  • 到目前为止我提出的唯一想法是,首先你必须找到所有至少有 4 个小方块的方块,然后检查它们是否符合被视为幻方的要求:/

标签: algorithm logic magic-square


【解决方案1】:

构造4个数组:

1:每个元素都是原始数组中的元素+左边的一个。

2:每个元素都是原始数组+1到顶部的元素。

3:每个元素都是原始数组中的元素+左上角的元素。

4:每个元素都是原始数组中的元素+右上角的元素。

您的阵列会得到类似的东西。 现在你必须检查数组中每个可能的正方形拟合(可能有更好的解决方案,但我想不出任何)在其他四个中寻找类似的东西。 由于我们在数组中保留了和,因此我们可以清楚地看到,在检查 3x3 数组时(从左上角开始),所有和都是 15。这意味着它是一个幻方。

当不是从左上角开始时,它有点不那么明显,但仍然很容易。请看下面的示例,其中突出显示了第二个幻方。 您可以看到,每一个较暗的元素减去相应的较轻的元素是恒定的(在本例中为 12)

第一个幻方也一样,但会有零,所以我们可以跳过它。

【讨论】:

  • 但这只有在你知道你的魔方在哪里时才有效,不是吗?
  • 我说过,您必须查看数组中每个可能的正方形。它只是使搜索更快,因为您不必重新计算所有内容。
猜你喜欢
  • 2014-09-04
  • 2016-07-02
  • 2014-12-24
  • 1970-01-01
  • 2017-11-26
  • 2012-05-18
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
相关资源
最近更新 更多