এই সমস্যায়, আমাদেরকে n*n আকারের একটি 2D বর্গক্ষেত্র ম্যাট্রিক্স ম্যাট[][][] দেওয়া হয়েছে। আমাদের কাজ হল প্রদত্ত ম্যাট্রিক্সটি 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.