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

C++ में बाइनरी मैट्रिक्स में 1s से बने आकारों का परिमाप खोजें


इस समस्या में, हमें nXm आकार का एक बाइनरी मैट्रिक्स bin[][] दिया गया है जिसमें केवल 0s और 1s हैं। हमारा कार्य बाइनरी मैट्रिक्स में 1s से बने आकारों का परिमाप खोजना है।

परिमाप आकृति को सभी तरफ से कवर करेगा, यानी

एकल मान के लिए, परिमाप 4 है।

C++ में बाइनरी मैट्रिक्स में 1s से बने आकारों का परिमाप खोजें

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

इनपुट

bin[][] = [1, 0] [1, 0]

आउटपुट

6

व्याख्या

सेल्स (0,0) और (1, 0) जुड़े हुए हैं जिससे भुजाओं 2 और 1 का एक आयत बनता है। परिमाप 6 है।

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

इस समस्या का एक सरल समाधान केवल सभी 1s और उनके परिमाप में योगदान को ढूंढना और फिर सभी को जोड़कर मान ढूंढना है।

मैट्रिक्स में 1 का परिमाप में योगदान है, अधिकतम योगदान 4 है, जब 1 अकेले परिमाप में योगदान देता है।

न्यूनतम योगदान 0 है, जब 1 सभी तरफ से 1s से घिरा होता है।

तो, मैट्रिक्स के प्रत्येक तत्व के लिए, हमें जांचना होगा कि यह 1 है या नहीं। सभी 1s के लिए, हम इसके पड़ोसियों को ढूंढेंगे और फिर परिमाप में योगदान और फिर अंत में परिमाप।

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

उदाहरण

#include<iostream> using namespace std; #define R 3 #define C 5 int contibutionToPerimeter(int mat[][C], int i, int j) {    int neighbours = 0;    if (i > 0 && mat[i - 1][j])       neighbours++;    if (j > 0 && mat[i][j - 1])       neighbours++;    if (i < R-1 && mat[i + 1][j])       neighbours++;    if (j < C-1 && mat[i][j + 1])       neighbours++;    return (4 - neighbours); } int calcPerimeter(int mat[R][C]){    int perimeter = 0;    for (int i = 0; i < R; i++)       for (int j = 0; j < C; j++)          if (mat[i][j] == 1)             perimeter += contibutionToPerimeter(mat, i ,j);    return perimeter; } int main() {    int mat[R][C] = { {0, 1, 0, 0, 0},    {1, 1, 1, 1, 0},    {1, 1, 0, 1, 1} };    cout<<"The perimeter of shapes from formed with 1s is "<<calcPerimeter(mat);    return 0; }

आउटपुट

The perimeter of shapes from formed with 1s is 18

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

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

  1. C++ में त्रिभुज का परिमाप खोजें C++ में त्रिभुज का परिमाप खोजें

    इस समस्या में, हम त्रिभुज का परिमाप, विभिन्न प्रकार के त्रिभुजों के परिमाप का सूत्र और उन्हें खोजने के लिए प्रोग्राम देखेंगे।परिमाप को आकृति के चारों ओर की कुल दूरी के रूप में परिभाषित किया गया है। मूल रूप से, यह दी गई आकृति की सभी भुजाओं का योग है।त्रिभुज का परिमापत्रिभुज का परिमाप इसकी सभी तीन भुज

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

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