Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm xem ma trận đã cho có phải là Toeplitz hay không trong C ++

Trong bài toán này, chúng ta được đưa ra một ma trận vuông 2D [] [] có kích thước n * n. Nhiệm vụ của chúng ta là tìm xem ma trận đã cho có phải là Toeplitz hay không.

Ma trận Toeplitz còn được gọi là ma trận đường chéo là ma trận trong đó các phần tử ở đường chéo bắt đầu từ góc trên bên trái đến góc dưới bên phải.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào:

Mat [] [] ={{3, 5, 1},
{4, 3, 2},
{1, 2, 3}}

Đầu ra:

Giải thích:

Đường chéo:(0, 0), (1, 1), (2, 2) có cùng giá trị 3.

Phương pháp tiếp cận giải pháp:

Một cách tiếp cận đơn giản để giải quyết vấn đề là kiểm tra tất cả các phần tử tại một chỉ số đường chéo. Các giá trị đường chéo này sẽ là các chỉ mục trong đó giá trị của cả i và j là như nhau.

Vì vậy, chúng ta cần kiểm tra tất cả i -> 0 đến n và j -> 0 đến n. Nếu i =j và mat [i] [j] giống nhau cho tất cả.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#include <iostream>
using namespace std;
#define N 4

bool isToeplizMatrix(int mat[N][N])
{
   int diagVal = mat[0][0];
for(int i = 0; i < N ; i++)
   {
      if(mat[i][i] != diagVal){
          return false;
      }
   }
   return true;
}

int main(){

   int mat[N][N] = { { 6, 7, 8, 9 },
                { 4, 6, 7, 8 },
                { 1, 4, 6, 7 },
                { 0, 1, 4, 6 }};

   if (isToeplizMatrix(mat))
      cout<<"Matrix is a Toepliz matrix.";
   else
      cout<<"Matrix is not a Toepliz matrix.";
     
   return 0;
}

Đầu ra

Matrix is a Toepliz matrix.