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

अधिकतम योग M तत्व चुनें जैसे कि सन्निहित दोहराव C++ में K से अधिक न हो

इस समस्या में, हमें array arr[] और दो पूर्णांक M और K दिए जाते हैं। हमारा कार्य दिए गए सरणी के तत्वों का उपयोग करके एक Array बनाना है। नई सरणी का आकार M होना चाहिए और K से बड़े आकार के किसी भी उप-सरणी में सभी तत्व समान नहीं हो सकते। हमें बनाई गई सरणी द्वारा अधिकतम संभव राशि प्रिंट करनी होगी।

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

इनपुट - एआर [] ={1, 2, 4, 5, 7}, एम =5, के =2

स्पष्टीकरण - सरणी बनाई गई है जो {7, 7, 5, 7, 7} की स्थिति को संतुष्ट करती है। यहां, 2 से अधिक आकार वाले किसी भी उप-सरणी में सभी तत्व समान नहीं हो सकते हैं।

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

उदाहरण

हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,

#include <iostream>
using namespace std;
long int arraySum(int arr[], int n, int m, int k){
   int max1 = arr[0], max2 = arr[0];
   for (int i = 1; i < n; i++) {
      if (arr[i] > max1) {
         max2 = max1;
         max1 = arr[i];
      }
      else if (arr[i] > max2)
         max2 = arr[i];
   }
   int max2count = m / (k + 1);
   long int sum = max2count * max2 + (m - max2count) * max1;
   return sum;
}
int main() {
   int arr[] = { 1, 3, 6, 7, 4, 5 };
   int n = sizeof(arr) / sizeof(arr[0]);
   int m = 9, k = 2;
   cout<<"The maximum sum of array created from the given array such that no subarray of size greater    than "<<k<<" will have same elements is ";
   cout<<arraySum(arr, n, m, k);
   return 0;
}

आउटपुट

The maximum sum of array created from the given array such that no subarray of size greater than 2 will have same elements is 60

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

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

  1. C++ में सन्निहित सरणी

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

  1. C++ में अधिकतम K सरणी तत्वों के संकेतों को फ़्लिप करके अधिकतम सबअरे योग

    इस समस्या में, हमें एक सरणी और एक पूर्णांक k दिया जाता है। हमारा कार्य एक ऐसा प्रोग्राम बनाना है जो C++ में अधिकतम k सरणी तत्वों के चिह्नों को फ़्लिप करके अधिकतम सबअरे योग प्राप्त करेगा। कोड विवरण - यहां, हमें सरणी में फ़्लिप करने के लिए अधिक से अधिक k तत्वों को खोजना होगा जो इस सरणी से बनाए गए सबअ