函数找出由n * m组成的矩形中有多少魔术方块,其中n,m - 自然数

时间:2014-11-19 14:47:09

标签: algorithm logic magic-square

enter image description here
我需要写一个算法如何解决这个练习,有什么建议吗?

练习:

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

魔方是kxk(k> = 2)个数字(通常是整数)在方格中的排列,其中每行和每列中的数字以及主对角线和次对角线中的数字都是加起来相同的数字。

1 个答案:

答案 0 :(得分:0)

构造4个数组:

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

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

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

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

你会得到类似这样的数组。 现在你必须检查数组中的每个可能的方形拟合(可能有更好的解决方案,但我想不出任何)在其他四个中寻找类似的东西。 由于我们在数组中保持总和,我们可以清楚地看到,当检查数组3x3(从左上角)时,所有总和都是15.这意味着它是一个魔术方块。

当没有从左上角开始时,它有点不那么明显但仍然很容易。请看下面的示例,突出显示第二个魔方。 你可以看到evey较暗的元素减去相应的较轻元素​​是恒定的(在这种情况下是12)

对于第一个魔方,它会有效,但会有零,所以我们可以跳过它。