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

C++ में अधिकतम दर्पण जो प्रकाश को नीचे से दाएं स्थानांतरित कर सकते हैं


हमें एक वर्ग मैट्रिक्स दिया गया है जिसमें केवल 0 और 1 हैं। 0 खाली स्थान दर्शाता है और 1 बाधा दर्शाता है। हमें खाली सेल पर रखे जा सकने वाले दर्पणों की संख्या ढूंढनी होगी ताकि ये दर्पण प्रकाश को नीचे से दाएं स्थानांतरित कर सकें। यह तब संभव है जब, दर्पण इंडेक्स [i,j] पर रखा गया हो और उस विशेष पंक्ति (i) में दाईं ओर के सभी सेल और उस विशेष कॉलम (j) में नीचे के सेल में कोई बाधा न हो।

यदि दर्पण A[i][j] पर है, तो सभी A[i+1 से n][j] और A[i][j+1 से n] खाली हैं यानी 0। जैसा कि नीचे दिए गए चित्र में दिखाया गया है।

C++ में अधिकतम दर्पण जो प्रकाश को नीचे से दाएं स्थानांतरित कर सकते हैं

इनपुट

Arr[][] = {{0,0,1,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,1,1,0,1},{1,1,1,0,1}}

आउटपुट

दर्पणों की संख्या: 3

व्याख्या: चित्र में दिखाए अनुसार। दर्पण सेल पर रखे जा सकते हैं:

Arr[1][0] - पंक्ति 1 और कॉलम 0 में इसके नीचे और दाईं ओर सभी 0 हैं।

Arr[2][0] - पंक्ति 2 और कॉलम 0 में इसके नीचे और दाईं ओर सभी 0 हैं।

Arr[4][4] - अंतिम सेल, 0 है और इसके नीचे कोई पंक्ति और दाईं ओर कोई कॉलम नहीं है।

प्रयुक्त दृष्टिकोण

  • सरणी Arr[][] का उपयोग 0 और 1 की मैट्रिक्स को दर्शाने के लिए किया जाता है।
  • फ़ंक्शन maximumMirror(int mat[][], int n) मैट्रिक्स और इसकी भुजा n को इनपुट के रूप में लेता है और ऊपर दिखाए अनुसार रखे जा सकने वाले अधिकतम दर्पणों की संख्या लौटाता है।
  • चर flag का उपयोग arr[i][j] के नीचे के सेल या दाईं ओर के सेल में बाधा की उपस्थिति को चिह्नित करने के लिए किया जाता है।
  • Count दर्पणों की संख्या को दर्शाता है, प्रारंभ में 0।
  • इंडेक्स 0,0 से मैट्रिक्स को पार करें।
  • प्रत्येक सेल के लिए यदि यह खाली है (दर्पण रखा जा सकता है), तो नीचे के सेल (k=i+1 से n-1) की जांच करें। यदि कोई arr[k][j] बाधा है (मान=1) तो while लूप तोड़ें और फ्लैग को 1 के रूप में चिह्नित करें। यदि नहीं, तो दाईं ओर के सेल (l=j+1 से n-1) की जांच जारी रखें।
  • बाधा मौजूद होने पर फ्लैग सेट करें।
  • दोनों while लूप के बाद यदि फ्लैग 0 है तो count बढ़ाएं क्योंकि दर्पण रखा जा सकता है।
  • count को अधिकतम दर्पणों की संख्या के रूप में लौटाएं।

उदाहरण कोड

// C++ प्रोग्राम यह पता लगाने के लिए कि कितने दर्पण प्रकाश को नीचे से दाएं स्थानांतरित कर सकते हैं #include <bits/stdc++.h> using namespace std; // विधि उन दर्पणों की संख्या लौटाती है जो प्रकाश को नीचे से दाएं स्थानांतरित कर सकते हैं int maximumMirror(int mat[5][5], int N){ // चिह्नित करने के लिए कि दाएं या नीचे के सभी सेल 0 हैं---कोई बाधा नहीं int flag=0; int count=0; //दर्पणों की संख्या int i,j,k,l; //सभी सेल के लिए for (int i=0; i 

आउटपुट

अधिकतम दर्पण जो प्रकाश को नीचे से दाएं स्थानांतरित कर सकते हैं: 3

  1. - गेहूँ बेचकर अधिकतम लाभ प्राप्त करने का C++ प्रोग्राम

    मान लीजिए n शहर हैं जो m एकदिश सड़कों से जुड़े हैं। सड़कें केवल स्रोत से गंतव्य की ओर जाती हैं। सड़कों को roads सरणी में {स्रोत, गंतव्य} प्रारूप में दिया गया है। प्रत्येक शहर में गेहूँ का मूल्य अलग-अलग है, जो price सरणी में दिया गया है जहाँ i-वाँ मान i-वें शहर में गेहूँ का मूल्य दर्शाता है। एक यात्

  1. - कार बेचकर अधिकतम लाभ प्राप्त करने का C++ प्रोग्राम

    मान लीजिए लाल और नीली कारों की माँग है। एक ऑटोमोबाइल कंपनी p लाल कारें और q नीली कारें अलग-अलग कीमतों पर बेचने का फैसला करती है। वर्तमान में कंपनी के पास a लाल कारें, b नीली कारें, और c रंगहीन कारें (अभी रंगी नहीं गई) स्टॉक में हैं। विभिन्न कारों के मूल्य सरणी A, B, और C में दिए गए हैं। कंपनी को एक

  1. ग्राफ से घटाए जा सकने वाले अधिकतम स्कोर की मात्रा ज्ञात करने का C++ प्रोग्राम ग्राफ से घटाए जा सकने वाले अधिकतम स्कोर की मात्रा ज्ञात करने का C++ प्रोग्राम

    मान लीजिए n वर्टेक्स और m एज वाला एक भारित, निदेश रहित ग्राफ दिया गया है। ग्राफ का स्कोर ग्राफ में सभी एज भारों का योग है। एज भार ऋणात्मक हो सकते हैं, और यदि उन्हें हटा दिया जाए तो ग्राफ का स्कोर बढ़ जाता है। हमें ग्राफ को संबद्ध रखते हुए एज हटाकर ग्राफ के स्कोर को न्यूनतम करना है। हमें घटाए जा सकन