我需要编写一个算法来解决这个练习,有什么建议吗?
锻炼:
我们有一个矩形,分成 nxm 个正方形,带有自然数。编写一个函数来计算这个矩形内有多少个魔方。
幻方是 kxk (k>=2) 个数字(通常是整数)在方形网格中的排列,其中每行和每列中的数字以及主对角线和辅助对角线中的数字加起来为相同的号码。
我需要编写一个算法来解决这个练习,有什么建议吗?
锻炼:
我们有一个矩形,分成 nxm 个正方形,带有自然数。编写一个函数来计算这个矩形内有多少个魔方。
幻方是 kxk (k>=2) 个数字(通常是整数)在方形网格中的排列,其中每行和每列中的数字以及主对角线和辅助对角线中的数字加起来为相同的号码。
构造 4 个数组:
1:每个元素都是原始数组+左边的元素。
2:每个元素都是从原始数组+一个到顶部的元素。
3:每个元素都是原始数组+左上角的元素。
4:每个元素都是原始数组+右上角的元素。
你会为你的数组得到类似的东西。 现在你必须检查数组中每个可能的正方形拟合(可能有更好的解决方案,但我想不出任何)在其他四个中寻找类似的东西。 由于我们在数组中保留了和,我们可以清楚地看到,当检查一个 3x3 数组(从左上角开始)时,所有的和都是 15。这意味着它是一个幻方。
当不是从左上角开始时,它有点不那么明显,但仍然很容易。请看下面的示例,其中突出显示了第二个幻方。 您可以看到,每一个较暗的元素减去相应的较轻的元素是恒定的(在本例中为 12)
对于第一个幻方,它的工作原理相同,但会有零,所以我们可以跳过它。