Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में मैट्रिक्स में पैटर्न की दिशा ढूंढना


इस समस्या में, हमें एक मैट्रिक्स दिया जाता है जिसमें वर्ण मान होते हैं जो एक पैटर्न बनाते हैं, हमें एक पैटर्न भी दिया जाता है जिसे ढूंढना है। हमारा कार्य मैट्रिक्स में पैटर्न की दिशा (क्षैतिज या लंबवत) ढूंढना है।

आइए एक उदाहरण से समस्या को समझते हैं,

इनपुट

mat[][] = {    { r, a, m },    {a, m, c},    {w, f, t} } पैटर्न : raw

आउटपुट

लंबवत

समाधान दृष्टिकोण

इस समस्या का एक सरल समाधान मैट्रिक्स की सभी N पंक्तियों में M आकार के पैटर्न को खोजना है। यह समाधान ठीक है लेकिन एक अधिक प्रभावी समाधान मैट्रिक्स की सभी पंक्तियों और स्तंभों के लिए KML पैटर्न मिलान एल्गोरिदम का उपयोग करना है।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,

उदाहरण

#include<bits/stdc++.h> using namespace std; #define N 3 void calcLpsValues(char *pat, int M, int *lps) {    int len = 0;    int i = 1;    lps[0] = 0;    while (i < M) {       if (pat[i] == pat[len]) {          len++;          lps[i++] = len;       } else {          if (len != 0)             len = lps[len - 1];          else             lps[i++] = 0;       }    } } int searchPattern(char *pat, char *txt) {    int M = strlen(pat);    int *lps = (int *)malloc(sizeof(int)*M);    int j = 0;    calcLpsValues(pat, M, lps);    int i = 0;    while (i < N) {       if (pat[j] == txt[i]) {          j++;          i++;       }       if (j == M)          return 1;       else if (i < N && pat[j] != txt[i]) {          if (j != 0)             j = lps[j - 1];          else             i = i + 1;       }    }    return 0; } void findPatternOrientation(char mat[][N], char *pat) {    char *col = (char*) malloc(N);    for (int i = 0; i < N; i++) {       if (searchPattern(pat, mat[i])) {          cout<<"horizontal";          return;       }       for (int j = 0; j < N; j++)          col[j] = *(mat[j] + i);       if (searchPattern(pat, col))          cout<<"vertical";    } } int main() {    char mat[N][N] = {{'r', 'a', 'm'},    {'a', 'm', 'c'},    {'w', 'f', 't'}};    char pattern[] = "raw";    cout<<"The orientation of the pattern in matrix is ";    findPatternOrientation(mat, pattern);    return 0; }

आउटपुट

The orientation of the pattern in matrix is vertical

  1. - C++ प्रोग्राम: ग्राफ मैट्रिक्स का व्युत्क्रम (Inverse) ज्ञात करना

    यह एक C++ प्रोग्राम है जो ग्राफ मैट्रिक्स का व्युत्क्रम ज्ञात करता है। मैट्रिक्स का व्युत्क्रम केवल तभी मौजूद होता है जब मैट्रिक्स नॉन-सिंगुलर हो यानी डिटरमिनेंट 0 नहीं होना चाहिए। मैट्रिक्स का व्युत्क्रम कई तरीकों से ज्ञात किया जा सकता है। यहां हम एडजॉइंट मैट्रिक्स और उसके डिटरमिनेंट का उपयोग करके

  1. - C++ प्रोग्राम: ग्राफ मैट्रिक्स का ट्रांसपोज़ ज्ञात करना

    इस प्रोग्राम में हम एक मैट्रिक्स लेते हैं और मैट्रिक्स का ट्रांसपोज़ प्रिंट करते हैं। ट्रांसपोज़ मैट्रिक्स में, पंक्तियां स्तंभ बन जाती हैं और इसके विपरीत। एल्गोरिदम शुरुआत मैट्रिक्स की पंक्तियों और स्तंभों की संख्या लें। मैट्रिक्स के तत्व लें और मैट्रिक्स A में संग्रहीत करें। ट्रांसपोज़ मैट्रिक्स

  1. - C++ में मैट्रिक्स का ट्रांसपोज़ खोजने का प्रोग्राम

    मैट्रिक्स संख्याओं का एक आयताकार सरणी है जो पंक्तियों और कॉलम के रूप में व्यवस्थित होता है। मैट्रिक्स का ट्रांसपोज़ एक नया मैट्रिक्स है जिसमें मूल की पंक्तियाँ अब कॉलम हैं और इसके विपरीत। उदाहरण के लिए। एक मैट्रिक्स नीचे दिया गया है: 1 2 3 4 5 6 7 8 9 उपरोक्त मैट्रिक्स का ट्रांसपोज़ निम्नानुसार है।