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

C++ में बाइनरी मैट्रिक्स में कोनों पर 1 वाला आयत ढूंढें


मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है। हमें उस मैट्रिक्स में किसी आयत या अनुक्रम को ढूंढना है जिसके चारों कोने 1 के बराबर हैं। मैट्रिक्स इस तरह है

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

परिणाम हाँ होगा। यहां एक आयत मौजूद है, जिसके कोने 1 के साथ हैं।

1 0 1
0 1 0
1 0 1

इसे हल करने के लिए हम एक कुशल दृष्टिकोण का उपयोग करेंगे। हम इन चरणों का पालन करेंगे -

  • मैट्रिक्स को ऊपर से नीचे लाइन दर लाइन स्कैन करें

  • प्रत्येक लाइन के लिए 1 के प्रत्येक संयोजन को याद रखें और उसे हैश-सेट में डालें।

  • यदि हमें बाद की लाइन में वह संयोजन फिर से मिलता है, तो हमें अपना आयत मिल जाएगा।

उदाहरण

#include<iostream> #include<unordered_set> #include<unordered_map> #include<vector> using namespace std; bool isRectanglePresent(const vector<vector<int> >& matrix) {     int rows = matrix.size();     if (rows == 0)         return false;     int columns = matrix[0].size();     unordered_map<int, unordered_set<int> > table;     for (int i = 0; i < rows; ++i) {         for (int j = 0; j < columns - 1; ++j) {             for (int k = j + 1; k < columns; ++k) {                 if (matrix[i][j] == 1 && matrix[i][k] == 1) {                     if (table.find(j) != table.end() && table[j].find(k) != table[j].end())                         return true;                     if (table.find(k) != table.end() && table[k].find(j) != table[k].end())                         return true;                     table[j].insert(k);                     table[k].insert(j);                 }             }         }     }     return false; } int main() {     vector<vector<int> > matrix = {         { 1, 0, 0, 1, 0 },         { 0, 0, 1, 0, 1 },         { 0, 0, 0, 1, 0 },         { 1, 0, 1, 0, 1 }     };     if (isRectanglePresent(matrix))         cout << "Rectangle is present";     else         cout << "Rectangle is not present"; }

आउटपुट

Rectangle is present

  1. C++ में पैरेंट पॉइंटर्स के साथ बाइनरी ट्री में दायां सहोदर खोजें C++ में पैरेंट पॉइंटर्स के साथ बाइनरी ट्री में दायां सहोदर खोजें

    इस समस्या में हमें एक बाइनरी ट्री और पैरेंट पॉइंटर्स दिए गए हैं। हमारा कार्य पैरेंट पॉइंटर्स के साथ बाइनरी ट्री में दायां सहोदर खोजना है।आइए एक उदाहरण से इस समस्या को समझते हैं,इनपुटNode = 3आउटपुट7समाधान दृष्टिकोणइस समस्या का एक सरल समाधान निकटतम पूर्वज (जो न तो वर्तमान नोड है और न ही वर्तमान नोड का

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

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

  1. C++ में मध्य बिंदुओं का उपयोग करके आयत के कोने ढूंढना C++ में मध्य बिंदुओं का उपयोग करके आयत के कोने ढूंढना

    मान लीजिए हमारे पास एक आयत ABCD है, लेकिन हमारे पास केवल मध्य बिंदुओं P और Q के निर्देशांक हैं, और आयत की लंबाई L है।हमारा कार्य P और Q के निर्देशांक, और भुजा की लंबाई L का उपयोग करके A, B, C और D के निर्देशांक ढूंढना है। उदाहरण के लिए, यदि P (1, 0) है, और Q (1, 2) है, और L 2 है, तो A, B, C, D क्रमश