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

C++ में दिए गए नंबरों तक सरणी तत्वों को अधिकतम करें

समस्या कथन

पूर्णांकों की एक सरणी, एक संख्या और एक अधिकतम मान को देखते हुए, कार्य उस अधिकतम मान की गणना करना है जो सरणी तत्वों से प्राप्त किया जा सकता है। शुरुआत से ट्रैवर्सिंग एरे पर प्रत्येक मान को पिछले इंडेक्स से प्राप्त परिणाम से जोड़ा या घटाया जा सकता है जैसे कि किसी भी बिंदु पर परिणाम 0 से कम नहीं होता है और दिए गए अधिकतम मूल्य से अधिक नहीं होता है। सूचकांक 0 के लिए पिछले परिणाम को दी गई संख्या के बराबर लें। उत्तर प्रिंट न होने की स्थिति में -1.

अगर एआर [] ={3, 10, 6, 4, 5}, संख्या =1 और अधिकतम मूल्य =15 तो आउटपुट 9 होगा यदि जोड़ और घटाव के क्रम का पालन करें -

1 + 3 + 10 – 6 – 4 + 5

एल्गोरिदम

हम इस समस्या को हल करने के लिए एक पुनरावर्ती दृष्टिकोण का उपयोग कर सकते हैं

1. At every index position there are two choices, either add current array element to value obtained so far from previous elements or subtract current array element from value obtained so far from previous elements
2. Start from index 0, add or subtract arr[0] from given number and recursively call for next index along with updated number
3. When entire array is traversed, compare the updated number with overall maximum value of number obtained so far

उदाहरण

#include <bits/stdc++.h>
using namespace std;
void getMaxValue(int *arr, int n, int num, int maxLimit, int
idx, int& result){
   if (idx == n) {
      result = max(result, num);
      return;
   }
   if (num - arr[idx] >= 0) {
      getMaxValue(arr, n, num - arr[idx], maxLimit, idx + 1, result);
   }
   if (num + arr[idx] <= maxLimit) {
      getMaxValue(arr, n, num + arr[idx], maxLimit, idx + 1, result);
   }
}
int getMaxValue(int *arr, int n, int num, int maxLimit){
   int result = 0;
   int idx = 0;
   getMaxValue(arr, n, num, maxLimit, idx, result);
   return result;
}
int main(){
   int num = 1;
   int arr[] = {3, 10, 6, 4, 5};
   int n = sizeof(arr) / sizeof(arr[0]);
   int maxLimit = 15;
   cout << "Maximum value = " << getMaxValue(arr, n, num, maxLimit) << endl;
   return 0;
}

आउटपुट

जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्न आउटपुट उत्पन्न करता है-

Maximum value = 9

  1. सी ++ में संख्याओं की एक सरणी के उत्पाद में पहला अंक

    इस ट्यूटोरियल में, हम सीखेंगे कि किसी सरणी के उत्पाद का पहला अंक कैसे खोजा जाए। आइए समस्या को हल करने के लिए चरणों को देखें। ऐरे को इनिशियलाइज़ करें। सरणी में तत्वों का गुणनफल खोजें। परिणाम को 10 से कम होने तक विभाजित करें। सिंगल-डिजिट प्रिंट करें उदाहरण आइए कोड देखें। #include <b

  1. सी ++ में सरणी तत्वों की आवृत्तियों की गणना करना

    हमें पूर्णांक तत्वों की एक सरणी दी गई है जिसमें डुप्लिकेट मान शामिल हैं और कार्य एक सरणी में मौजूद अलग-अलग तत्वों की आवृत्तियों की गणना करना और परिणाम प्रिंट करना है। इनपुट - int arr[] ={1, 1, 2, 3, 4, 1, 2, 3} आउटपुट - frequency of 1 is: 3 frequency of 2 is: 2 frequency of 3 is: 2 Frequency of 4

  1. C++ में किसी सरणी में सभी अभाज्य संख्याओं का गुणनफल

    कुछ तत्वों के साथ एक पूर्णांक सरणी arr[] को देखते हुए, कार्य उस संख्याओं की सभी अभाज्य संख्याओं का गुणनफल खोजना है। अभाज्य संख्याएँ वे संख्याएँ होती हैं जिन्हें या तो 1 से या स्वयं संख्या से विभाजित किया जाता है, या एक अभाज्य संख्या एक ऐसी संख्या होती है जो 1 और स्वयं संख्या को छोड़कर किसी अन्य संख