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

C++ में बाइनरी मैट्रिक्स में डुप्लिकेट पंक्तियां ढूंढें


मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है। यहां हम देखेंगे कि उस मैट्रिक्स में डुप्लिकेट पंक्तियों को कैसे ढूंढें। मान लीजिए मैट्रिक्स इस तरह है -

1 1 0 1 0 1
0 0 1 0 0 1
1 0 1 1 0 0
1 1 0 1 0 1
0 0 1 0 0 1
0 0 1 0 0 1

स्थिति 3, 4, 5 पर डुप्लिकेट पंक्तियां हैं।

इसे हल करने के लिए, हम ट्राई का उपयोग करेंगे। ट्राई डेटा संग्रह और पुनर्प्राप्ति के लिए एक कुशल डेटा संरचना है जहां वर्ण समूह छोटा होता है। खोज जटिलता कुंजी लंबाई के रूप में इष्टतम होती है। तो पहले हम बाइनरी ट्राई डालेंगे। यदि नई जोड़ी गई पंक्ति पहले से मौजूद है, तो वह डुप्लिकेट है।

उदाहरण

#include<iostream> using namespace std; const int MAX = 100; class Trie {     public:     bool leaf_node;     Trie* children[2]; }; Trie* getNode() {     Trie* node = new Trie;     node->children[0] = node->children[1] = NULL;     node->leaf_node = false;     return node; } bool insert(Trie*& head, bool* arr, int N) {     Trie* curr = head;     for (int i = 0; i < N; i++) {         if (curr->children[arr[i]] == NULL)             curr->children[arr[i]] = getNode();         curr = curr->children[arr[i]];     }     if (curr->leaf_node)         return false;     return (curr->leaf_node = true); } void displayDuplicateRows(bool matrix[][MAX], int M, int N) {     Trie* head = getNode();     for (int i = 0; i < M; i++)         if (!insert(head, matrix[i], N))         cout << "There is a duplicate row at position: "<< i << endl; } int main() {     bool mat[][MAX] = {         {1, 1, 0, 1, 0, 1},         {0, 0, 1, 0, 0, 1},         {1, 0, 1, 1, 0, 0},         {1, 1, 0, 1, 0, 1},         {0, 0, 1, 0, 0, 1},         {0, 0, 1, 0, 0, 1},     };     displayDuplicateRows(mat, 6, 6); } 

आउटपुट

There is a duplicate row at position: 3 There is a duplicate row at position: 4 There is a duplicate row at position: 5

  1. C++ में बाइनरी ट्री के पत्ते खोजें - स्तर दर स्तर संग्रह C++ में बाइनरी ट्री के पत्ते खोजें - स्तर दर स्तर संग्रह

    समस्या विवरण मान लीजिए हमारे पास एक बाइनरी ट्री है। हम सभी पत्तियों को संग्रहित और हटाएंगे और तब तक दोहराएंगे जब तक ट्री खाली न हो जाए। उदाहरण के लिए, यदि इनपुट इस तरह का ट्री है: तो आउटपुट [[4,5,3],[2],[1]] होगा। समाधान दृष्टिकोण DFS का उपयोग करके प्रत्येक नोड की ऊंचाई (पत्तियों से दूरी) की गणन

  1. C++ में डुप्लिकेट उपट्री ढूंढना C++ में डुप्लिकेट उपट्री ढूंढना

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें सभी डुप्लिकेट उपट्री ढूंढने हैं। इसलिए प्रत्येक प्रकार के डुप्लिकेट उपट्री के लिए, हमें उनमें से किसी एक का रूट नोड लौटाना है। मान लीजिए हमारे पास ऐसा ट्री है: डुप्लिकेट उपट्री हैं: हल का दृष्टिकोण इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  1. C++ में सभी डुप्लिकेट सबट्री खोजें C++ में सभी डुप्लिकेट सबट्री खोजें

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें यह पता लगाना है कि ट्री में कुछ डुप्लिकेट सबट्री हैं या नहीं। मान लीजिए हमारे पास नीचे जैसा बाइनरी ट्री है: आकार 2 के दो समान सबट्री हैं। प्रत्येक सबट्री में D, BD और BE भी डुप्लिकेट सबट्री हैं। हम इस समस्या को ट्री सीरियलाइज़ेशन और हैशिंग प्रक्रिया का उ