इस समस्या में, हमें आकार n*n का एक 2D वर्ग मैट्रिक्स mat[][] दिया गया है। हमारा कार्य यह जांचना है कि दी गई मैट्रिक्स टॉपलिट्ज़ है या नहीं।
टॉपलिट्ज़ मैट्रिक्स जिसे विकर्ण मैट्रिक्स के रूप में भी जाना जाता है, एक मैट्रिक्स है जिसमें शीर्ष-बाएं कोने से नीचे-दाएं कोने से शुरू होने वाले विकर्ण पर तत्व होते हैं।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट:
Mat[][] = {{3, 5, 1},
{4, 3 ,2},
{1, 2, 3}}
आउटपुट: Yes
व्याख्या:
विकर्ण: (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.