এই সমস্যায়, আমাদের একটি ২D বর্গ ম্যাট্রিক্স mat[][] দেওয়া আছে আকার n*n। আমাদের কাজ হল ম্যাট্রিক্সটি ট্যাপলিটজ (Toeplitz) কিনা তা খুঁজে বের করা।
ট্যাপলিটজ ম্যাট্রিক্স যাকে ডায়াগোনাল ম্যাট্রিক্সও বলা হয়, এতে উপরের বাম কন্যা থেকে নিচের ডান কন্যা পর্যন্ত ডায়াগোনালের সব এলিমেন্ট একই থাকে।
উদাহরণ দিয়ে বুঝি,
ইনপুট:
Mat[][] = {{3, 5, 1},
{4, 3 ,2},
{1, 2, 3}}
আউটপুট: হ্যাঁ
ব্যাখ্যা:
ডায়াগোনাল: (0, 0), (1, 1), (2, 2) সবগুলো মান ৩।
সমাধানের পদ্ধতি:
সহজ পদ্ধতিতে সব ডায়াগোনাল ইন্ডেক্সের এলিমেন্ট চেক করুন। ডায়াগোনাল মানগুলো হবে সেই ইন্ডেক্স যেখানে 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.