在C ++中检查给定矩阵是否为幻方

在这里,我们将看到,无论矩阵是否是幻方,幻方都是方矩阵,其中每一行,每一列和每个对角线的总和是相同的。

假设矩阵如下-

618
753
294

如果看到的话,这是一个魔方,每行,每列和对角线的总和为15。

要检查矩阵是否为幻方,我们必须找到主对角线和副对角线和,如果它们相同,则为幻方,否则为非。

示例

#include <iostream>

#define N 3

using namespace std;

bool isMagicSquare(int mat[][N]) {

   int sum_diag = 0,sum_diag_second=0;

   for (int i = 0; i < N; i++)

      sum_diag = sum_diag + mat[i][i];

   for (int i = 0; i < N; i++)

      sum_diag_second = sum_diag_second + mat[i][N-1-i];

   if(sum_diag!=sum_diag_second)

      return false;

   for (int i = 0; i < N; i++) {

      int rowSum = 0;

      for (int j = 0; j < N; j++)

         rowSum += mat[i][j];

      if (rowSum != sum_diag)

         return false;

   }

   for (int i = 0; i < N; i++) {

      int colSum = 0;

      for (int j = 0; j < N; j++)

         colSum += mat[j][i];

      if (sum_diag != colSum)

      return false;

   }

   return true;

}

int main() {

   int mat[][N] = {{ 6, 1, 8 },

   { 7, 5, 3 },

   { 2, 9, 4 }};

   if (isMagicSquare(mat))

      cout << "It is Magic Square";

   else

   cout << "It is Not a magic Square";

}

输出结果

It is Magic Square

以上是 在C ++中检查给定矩阵是否为幻方 的全部内容, 来源链接: utcz.com/z/340980.html

回到顶部