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

ค้นหาว่าเมทริกซ์ที่กำหนดคือ Toeplitz หรือไม่ใน C ++


ในปัญหานี้ เราได้รับ 2D square matrix mat[][] ขนาด n*n งานของเราคือค้นหาว่าเมทริกซ์ที่กำหนดคือ Toeplitz หรือไม่

เมทริกซ์ Toeplitz หรือที่เรียกว่าเมทริกซ์แนวทแยงคือเมทริกซ์ที่องค์ประกอบในแนวทแยงเริ่มจากมุมบนซ้ายไปยังมุมล่างขวา

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ป้อนข้อมูล:

เสื่อ[][] ={{3, 5, 1},
{4, 3 ,2},
{1, 2, 3}}

ผลลัพธ์: ใช่

คำอธิบาย:

เส้นทแยงมุม :(0, 0), (1, 1) , (2, 2) มีค่าเท่ากัน 3.

แนวทางแก้ไข:

วิธีง่ายๆ ในการแก้ปัญหาคือการตรวจสอบองค์ประกอบทั้งหมดที่ดัชนีแนวทแยง ค่าแนวทแยงเหล่านี้จะเป็นดัชนีโดยที่ค่าของทั้ง i และ j เท่ากัน

ดังนั้น เราต้องตรวจสอบ i -> 0 ถึง n และ j -> 0 ถึง n ทั้งหมด ถ้า i =j และ mat[i][j] เหมือนกันหมด

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#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;
}

ผลลัพธ์

Matrix is a Toepliz matrix.