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

C++ में मैट्रिक्स में ऊपरी बाएं से निचले दाएं तक सभी पैलिंड्रोमिक पथ प्रिंट करें


इस समस्या में, हमें एक मैट्रिक्स दिया गया है जिसमें वर्णमाला (केवल लोअरकेस) होती है और हमें दिए गए मैट्रिक्स में ऊपरी बाएं से निचले दाएं तक के सभी पैलिंड्रोमिक पथ प्रिंट करने हैं।

इस समस्या में अनुमत चालें दाएं और नीचे हैं। विकर्ण चालें अनुमत नहीं हैं।

समस्या को समझने के लिए एक उदाहरण लेते हैं -

इनपुट: मैट्रिक्स[][] ={    {"xxxy",    "yxxx",    "xyyx"} आउटपुट: xxxxxx , xxxxxx , xyxxyx

व्याख्या

आइए iवें स्थान के सापेक्ष ऊपरी बाएं से निचले दाएं तक सभी वैध चालें देखें।

i00 -> i01 -> i02 -> i03 -> i13 -> i23 = xxxyxx i00 -> i01 -> i11 -> i12 -> i13 -> i23 = xxxxxx . . . i00 -> i10 -> i20 -> i21 -> i22 -> i23 = xyxyyx 

सभी संभावित परिणामों में से, हमें केवल पैलिंड्रोमिक पथ परिणाम चाहिए जो हैं -

i00 -> i01 -> i11 -> i12 -> i13 -> i23 = xxxxxx i00 -> i01 -> i02 -> i12 -> i13 -> i23 = xxxxxx i00 -> i10 -> i11 -> i12 -> i22 -> i23 = xyxxyx

व्याख्या में ही, हमने समस्या के समाधान का आधार रखा है। हम ऊपरी-बाएं से निचले-दाएं तक सभी पथ ढूंढेंगे और उन सभी को प्रिंट करेंगे जो पैलिंड्रोमिक पथ के परिणाम देते हैं।

उदाहरण

नीचे दिया गया उदाहरण समाधान को चित्रित करेगा -

#include<iostream> using namespace std; #define N 4 int printPalindrome(string str){    int len = str.length() / 2;    for (int i = 0; i < len; i++) {       if (str[i] != str[str.length() - i - 1])       return 0;    }    cout<<str<<endl; } void findPath(string str, char a[][N], int i, int j, int m, int n) {    if (j < m - 1 || i < n - 1) {       if (i < n - 1)       findPath(str + a[i][j], a, i + 1, j, m, n);       if (j < m - 1)       findPath(str + a[i][j], a, i, j + 1, m, n);    } else {       str = str + a[n - 1][m - 1];       printPalindrome(str) ;    } } int main() {    char matrix[][N] = {       { 'x', 'y', 'x', 'y' },       { 'y', 'x', 'x', 'y' },       { 'y', 'x', 'y', 'x' }    };    string str = "";    cout<<"Palimdromic path are : ";    findPath(str, matrix, 0, 0, 4, 3);    return 0; }

आउटपुट

Palimdromic path are : xyxxyx xyxxyx xyxxyx xyxxyx xyxxyx xyxxyx xyxxyx xyxxyx

  1. C++ में दिए गए नोड से दूरी K पर सभी नोड्स प्रिंट करना C++ में दिए गए नोड से दूरी K पर सभी नोड्स प्रिंट करना

    इस समस्या में, हमें एक बाइनरी ट्री, एक टारगेट नोड और एक पूर्णांक K दिया गया है। हमें ट्री के उन सभी नोड्स को प्रिंट करना है जो टारगेट नोड से दूरी K पर हैं। बाइनरी ट्री बाइनरी ट्री एक विशेष ट्री है जिसके प्रत्येक नोड में अधिकतम दो नोड्स होते हैं (एक/दो/कोई नहीं)। उदाहरण K = 2 टारगेट नोड: 9 आउटपुट

  1. C++ में BFS का उपयोग करके दिए गए स्रोत से गंतव्य तक सभी पथ प्रिंट करें C++ में BFS का उपयोग करके दिए गए स्रोत से गंतव्य तक सभी पथ प्रिंट करें

    इस समस्या में हमें एक निर्देशित ग्राफ दिया गया है और हमें ब्रेडथ फर्स्ट सर्च (BFS) का उपयोग करके ग्राफ के स्रोत से गंतव्य तक सभी पथ प्रिंट करने हैं। निर्देशित ग्राफ एक ग्राफ है जिसमें किनारे शीर्ष a से b की ओर निर्देशित होते हैं। समस्या को समझने के लिए एक उदाहरण लेते हैं - स्रोत = K गंतव्य = P आउट

  1. C++ में दिए गए स्रोत से गंतव्य तक सभी पथ प्रिंट करें C++ में दिए गए स्रोत से गंतव्य तक सभी पथ प्रिंट करें

    इस समस्या में हमें एक निर्देशित ग्राफ दिया गया है और हमें ग्राफ के स्रोत से गंतव्य तक सभी पथ प्रिंट करने हैं। निर्देशित ग्राफ एक ग्राफ है जिसमें किनारे शीर्ष a से b की ओर निर्देशित होते हैं। समस्या को समझने के लिए एक उदाहरण लेते हैं स्रोत = K गंतव्य = P आउटपुट: P यहां, हमने K से P तक के पथ ढूंढे