Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่าเมทริกซ์ที่กำหนดเป็นเมจิกสแควร์หรือไม่ใน C ++


ในที่นี้เราจะมาดูกันว่าเมทริกซ์เป็นเมจิกสแควร์หรือไม่ เมจิกสแควร์ก็คือเมทริกซ์สี่เหลี่ยมจัตุรัส โดยที่ผลรวมของแต่ละแถว แต่ละคอลัมน์ และแต่ละแนวทแยงจะเท่ากัน

สมมติว่าเมทริกซ์อยู่ด้านล่าง -

6 1 8
7 5 3
2 9 4

นี่คือตารางมหัศจรรย์ หากเราเห็น ผลรวมของแต่ละแถว คอลัมน์ และแนวทแยงคือ 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