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

2 x n ग्रिड में अधिकतम योग जैसे कि C++ में कोई भी दो तत्व आसन्न न हों

इस समस्या में, हमें 2 x n आकार का एक आयताकार ग्रिड दिया गया है। हमारा काम 2 x n ग्रिड में अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है, ताकि कोई भी दो तत्व C++ में आसन्न न हों।

समस्या का विवरण

अधिकतम योग ज्ञात करने के लिए, हम उन तत्वों का चयन नहीं कर सकते जो वर्तमान तत्व से सटे हैं, लंबवत, क्षैतिज या तिरछे।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

rectGrid[2][] =389
411

आउटपुट

13

स्पष्टीकरण

सभी संभावित राशियाँ हैं

अगर हम rectGrid[0][0] यानी 3 से शुरू करते हैं, तो हम केवल 9 या 1 जोड़ सकते हैं। अधिकतम राशि 12 है।

अगर हम rectGrid[1][0] यानी 4 से शुरू करते हैं, तो हम केवल 9 या 1 जोड़ सकते हैं। अधिकतम राशि 13 है।

अगर हम रेक्टग्रिड [0] [1] यानी 8 से शुरू करते हैं, तो हम कोई तत्व नहीं जोड़ सकते हैं। अधिकतम योग 8 है।

अगर हम रेक्टग्रिड [1] [1] यानी 1 से शुरू करते हैं, तो हम कोई तत्व नहीं जोड़ सकते हैं। अधिकतम राशि 1 है।

अगर हम रेक्टग्रिड [0] [2] यानी 9 से शुरू करते हैं, तो हम केवल 3 या 4 जोड़ सकते हैं। अधिकतम राशि 13 है।

अगर हम rectGrid[1][2] यानी 1 से शुरू करते हैं, तो हम केवल 3 या 4 जोड़ सकते हैं। अधिकतम राशि 5 है।

कुल मिलाकर अधिकतम राशि 13 है।

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

समस्या अधिकतम योग के समान है जैसे कि कोई भी दो तत्व आसन्न नहीं हैं जैसा कि हमने पिछली पोस्ट में देखा है। अंतर वह सरणी है जो यहां 2D है और आसन्न तत्वों की स्थिति है। इसलिए, हम पंक्तियों और स्तंभों दोनों के लिए शर्तों का उपयोग करते हुए अधिकतम तत्व पर विचार करेंगे। चूंकि प्रत्येक कॉलम में दो पंक्तियां हैं, हम वैकल्पिक तत्वों पर अधिकतम संभव विचार करेंगे।

उदाहरण

समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,

#include<iostream>
using namespace std;
int findMax(int a, int b){
   if(a > b)
      return a;
      return b;
   }
int calcMaxSum(int rectGrid[2][20], int N){
   int currectSum = 0;
   int nextSum = 0;
   int altSum;
   for (int i = 0; i<N; i++ ){
      altSum = findMax(nextSum, currectSum);
      currectSum = nextSum + findMax(rectGrid[0][i], rectGrid[1][i]);
      nextSum = altSum;
   }
   int maxSum = findMax(nextSum, currectSum);
   return maxSum;
}
int main(){
   int rectGrid[2][20] = {{3, 8, 9, 5},
   {4, 1, 2, 7}};
   int N = 4;
   cout<<"The maximum sum in a 2 x "<<N<<" grid such that no two elements are adjacent is "<<calcMaxSum(rectGrid, N);
   return 0;
}

आउटपुट

The maximum sum in a 2 x 4 grid such that no two elements are adjacent is 15

  1. बाइनरी ट्री में नोड्स का अधिकतम योग जैसे कि C++ प्रोग्राम में डायनामिक प्रोग्रामिंग का उपयोग करते हुए कोई भी दो आसन्न नहीं हैं

    इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है जिसमें प्रत्येक नोड का एक मान होता है। हमारा काम बाइनरीट्री में नोड्स की अधिकतम राशि को खोजने के लिए एक प्रोग्राम बनाना है जैसे कि कोई भी दो आसन्न न हो। डायनामिक प्रोग्रामिंग का उपयोग करना। समस्या का विवरण - हम योग को अधिकतम करने के लिए बाइनरी ट्री के

  1. सर्कुलर सरणी में अधिकतम योग जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं

    इस समस्या में, हमें एक वृत्ताकार सरणी cirArr[] दी गई है। हमारा काम सर्कुलर सरणी में अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं। समस्या का विवरण वृत्ताकार सरणी के लिए, हमें सरणी के तत्वों का अधिकतम योग ज्ञात करना होगा जैसे कि आसन्न तत्वों को नहीं लि

  1. C++ में दो सरणियों में अधिकतम योग पथ

    समस्या कथन दो क्रमबद्ध सरणियों को देखते हुए ऐसे सरणियों में कुछ सामान्य तत्व हो सकते हैं। किसी भी सरणी की शुरुआत से किसी भी दो सरणी के अंत तक पहुंचने के लिए अधिकतम योग पथ का योग ज्ञात करें। हम एक सरणी से दूसरे सरणी में केवल सामान्य तत्वों पर स्विच कर सकते हैं। ध्यान दें कि सामान्य तत्वों का एक ही अ