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

सी ++ एक विस्तारित मैट्रिक्स में पिछला तत्व लौटाएं

मैट्रिक्स के विस्तार पर आधारित किसी समस्या की चर्चा कीजिए। एक्सपेंडिंग मैट्रिक्स एक मैट्रिक्स है जिसका आकार लगातार किसी न किसी कारक से बढ़ता है।

यहां हमारे पास वर्णों का एक मैट्रिक्स है जिसका आकार 2 के कारक से बढ़ रहा है, अर्थात, यदि मैट्रिक्स का मूल आकार N * N है, तो विस्तारित मैट्रिक्स का आकार 2N * 2N हो जाता है। हमें (i, j) पर मौजूद वर्णों का एक क्रम दिया गया है, और हमें (i, (j - N - 1)%N) पर मौजूद वर्णों के अनुक्रम को वापस करना होगा।

आइए कुछ प्रारंभिक विस्तारित मैट्रिक्स की कल्पना करके समझते हैं,

Given Matrix -> [ a, b ] [ c, d ], 2 X 2 matrix
Multiplying with { a, b, c, d }
A X [ a, b ]
B X [ a, b ]
C X [ a, b ]
D X [ a, b ]
[ c, d ] [ c, d ] [ c, d ] [ c, d ]

Expanded Matrix -> [ aa, ab, ba, bb ]
[ ac, ad, bc, bd ]
[ ca, cb, da, db ]
[ cc, cd, dc, dd ], 4X4 matrix
To expand again, multiply it by { a, b, c, d } and a matrix of size 8X8 will be formed.

Expanded Matrix - > [ aaa, aab, aba, abb, baa, bab, bba, bbb ]
[ aac, aad, abc, abd, bac, bad, bbc, bbd ]
[ aca, acb, ada, adb, bca, bcb, bda, bdb ]
[ acc, acd, adc, add, bcc, bcd, bdc, bdd ]
[ caa, cab, cba, cbb, daa, dab, dba, dbb ]
[ cac, cad, cbc, cbd, dac, dad, dbc, dbd ]
[ cca, ccb, cda, cdb, dca, dcb, dda, ddb ]
[ ccc, ccd, cdc, cdd, dcc, dcd, ddc, ddd ]

यहाँ दो प्रारंभिक विस्तारित मैट्रिक्स हैं; तो मान लीजिए कि हमें "बीसीसी" वर्णों का अनुक्रम दिया गया है, तो हमें उस अनुक्रम को वापस करने की आवश्यकता है, यानी "जोड़ें।" इसके अलावा, मैट्रिक्स को वृत्ताकार माना जाता है, अर्थात, यदि दिया गया अनुक्रम (i, 0) पर है, तो उदाहरण के लिए अनुक्रम (i, N-1) पर वापस करें

Input: abb
Output: aba
Explanation: The sequence just left to abb is aba in the 8X8 matrix.

Input: aadc
Output: aacd

Input: abbcd
Output: abbcc

समाधान खोजने के लिए दृष्टिकोण

पहले समस्या को देखते हुए और एकमात्र समाधान जो दिमाग में आता है वह विस्तारित मैट्रिक्स को ढूंढना है जिसमें दिए गए अनुक्रम शामिल हैं लेकिन बहुत जटिल नहीं दिखते हैं। हमें पहले मैट्रिक्स बनाने और फिर अनुक्रम की खोज करने की आवश्यकता है।

कुशल दृष्टिकोण

कुछ प्रारंभिक विस्तारित मैट्रिक्स को देखने के बाद, हमें एक पैटर्न मिला जिसके माध्यम से हम पिछले तत्व को देख सकते हैं। यानी

  • अंतिम अनुक्रमणिका से वर्णों के अनुक्रम को पार करें।

  • यदि अनुक्रमित तत्व 'बी' या 'डी' है, तो इसे 'ए' या 'सी' में बदलें और सरणी को पार करना बंद करें।

  • यदि अनुक्रमित तत्व 'ए' या 'सी' है, तो इसे 'बी' या 'डी' में बदलें और अगली अनुक्रमणिका पर जाएं और इसे जांचें।

उदाहरण

उपरोक्त दृष्टिकोण के लिए C++ कोड

#include <bits/stdc++.h>
using namespace std;
int main (){
   string seq = "abbcd";
   int n = seq.length ();
   // traverse through the string from last.
   for (int i = n; i >= 0; i--){
      // if the element is b or d, change them and stop traversing.
      if (seq[i] == 'b'){
      seq[i] = 'a';
      break;
   }
   if (seq[i] == 'd'){
      seq[i] = 'c';
      break;
   }
   // if an element is b or d, change them and move to the next element.
   if (seq[i] == 'a')
      seq[i] = 'b';
   else if (seq[i] == 'c')
      seq[i] = 'd';
   }
   cout << "The Previous sequence is: " << seq;
   return 0;
}

आउटपुट

The previous sequence is: abbcc

निष्कर्ष

इस लेख में, हमने विस्तारित चरित्र मैट्रिक्स पर चर्चा की और यह कैसे बनता है। हमने एक विस्तारित मैट्रिक्स में पिछले तत्व को खोजने की समस्या पर भी चर्चा की। हमने वर्णों के मैट्रिक्स का विस्तार करके बनाए गए पैटर्न को समझकर इस समस्या को हल किया।

हमने इस समस्या के लिए C++ कोड पर भी चर्चा की जिसे हम किसी भी प्रोग्रामिंग भाषा जैसे C, Java, Python, आदि में लिख सकते हैं। हमें उम्मीद है कि आपको यह ट्यूटोरियल मददगार लगेगा।


  1. सी++ बूलियन मैट्रिक्स

    बूलियन मैट्रिक्स एक मैट्रिक्स है जिसमें केवल दो तत्व 0 और 1 हैं। इस बूलियन मैट्रिक्स प्रश्न के लिए, हमारे पास एमएक्सएन आकार का बूलियन मैट्रिक्स एआर [एम] [एन] है। और हल करने की शर्त है, यदि m[i][j] =1 तो m[i] =1 और m[j] =1 जिसका अर्थ है कि ith पंक्ति और jth कॉलम के सभी तत्व 1 हो जाएंगे। आइए एक उदाहर

  1. सी ++ में बिसिमेट्रिक मैट्रिक्स?

    यहां हम एक प्रोग्राम देखेंगे जो यह जांचने में मदद करेगा कि मैट्रिक्स द्वि-सममित है या नहीं। बिसिमेट्रिक मैट्रिक्स एक वर्ग मैट्रिक्स है जो दोनों प्रमुख विकर्णों के बारे में सममित है। नीचे दिया गया मैट्रिक्स बाईसिमेट्रिक मैट्रिक्स का एक उदाहरण है। 1 2 3 4 5 2 6 7 8 4 3 7 9 7 3 4 8 7 6 2 5 4 3 2 1 एल्ग

  1. सी ++ में एक बूलियन मैट्रिक्स प्रश्न?

    यहां हम एक दिलचस्प बूलियन मैट्रिक्स समस्या देखेंगे। एक बूलियन मैट्रिक्स दिया गया है जिसमें 0 और 1 है। हमारा लक्ष्य यह पता लगाना है कि 1 कहाँ अंकित है। यदि 1 को स्थिति mat[i,j] पर चिह्नित किया गया है, तो हम पंक्ति i और कॉलम j की 1 में सभी प्रविष्टियां करेंगे। आइए एक उदाहरण देखते हैं। यदि मैट्रिक्स नी