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

C++ . का उपयोग करके i*arr[i] को अधिकतम करने के लिए एक सरणी को पुनर्व्यवस्थित करें

इस लेख में, हम n संख्याओं के दिए गए सरणी को पुनर्व्यवस्थित करने की समस्या पर चर्चा करेंगे। मूल रूप से, हमें सरणी से तत्वों का चयन करना होगा। प्रत्येक तत्व का चयन करने के लिए, हमें कुछ बिंदु मिलते हैं जिनका मूल्यांकन वर्तमान तत्व के मूल्य से किया जाएगा * वर्तमान तत्व से पहले चुने गए कई तत्व। अधिकतम अंक प्राप्त करने के लिए आपको तत्वों का चयन करना चाहिए। उदाहरण के लिए -

Input : arr[ ] = { 3, 1, 5, 6, 3 }

If we select the elements in the way it is given, our points will be
   = 3 * 0 + 1 * 1 + 5 * 2 + 6 * 3 + 3 * 4
   = 41
To maximize the points we have to select the elements in order { 1, 3, 3, 5, 6 }
   = 1 * 0 + 3 * 1 + 3 * 2 + 5 * 3 + 6 * 4
   = 48(maximum)

Output : 48

Input : arr[ ] = { 2, 4, 7, 1, 8 }
Output : 63

समाधान खोजने के लिए दृष्टिकोण

उदाहरण को देखते हुए, हमें वह अधिकतम अंक प्राप्त करने के लिए मिला, और हमें सबसे छोटे से सबसे बड़े तत्वों का चयन करने की आवश्यकता है। समाधान खोजने का तरीका है,

  • दिए गए सरणी को आरोही क्रम में क्रमबद्ध करें।
  • इंडेक्स 0 से अंत तक तत्वों को चुनना शुरू करें।
  • प्रत्येक तत्व को चुनने से प्राप्त अंकों की गणना करें।

उदाहरण

#include <bits/stdc++.h>
#include <iostream>
using namespace std;

int main () {
   int arr[] = { 2, 4, 7, 1, 8 };
   int n = sizeof (arr) / sizeof (arr[0]);
   // sorting the array
   sort (arr, arr + n);

   int points = 0;
   // traverse the array and calculate the points
   for (int i = 0; i < n; i++) {
      points += arr[i] * i;
   }
   cout << "Maximum points: " << points;
   return 0;
}

आउटपुट

Maximum points: 63

उपरोक्त कोड की व्याख्या

यह C++ कोड समझने में आसान है। पहले हम सरणी को सॉर्ट कर रहे हैं और फिर लूप के लिए उपयोग करके सरणी को पार करते हैं और शुरुआत से अंत तक प्रत्येक तत्व का चयन करके प्राप्त अंकों की गणना करते हैं।

निष्कर्ष

इस लेख में, हम अधिकतम अंक प्राप्त करने के लिए एक सरणी में तत्व के चयन की समस्या पर चर्चा करते हैं जहां अंक की गणना i * arr [i] द्वारा की जाती है। हम इस समस्या को हल करने और अधिकतम अंक प्राप्त करने के लिए लालची दृष्टिकोण लागू करते हैं। ऐसा करने के लिए सी ++ कोड पर भी चर्चा करें, हम इस कोड को सी, जावा, पायथन इत्यादि जैसी किसी अन्य भाषा में लिख सकते हैं। आशा है कि आपको यह लेख उपयोगी लगेगा।


  1. एसटीएल का उपयोग कर सी ++ में ऐरे उत्पाद

    यह ऐरे उत्पाद का पता लगाने के लिए C++ प्रोग्राम का एक उदाहरण है। एल्गोरिदम Begin Initialize the values of array. Call used defined function accumulate to return the product of array. Print the solution. End. उदाहरण कोड #include <iostream> #include <numeric> using namespace std;

  1. सी++ में पॉइंटर अंकगणित का उपयोग करके सरणी का योग

    यह पॉइंटर का उपयोग करके सरणी तत्वों के योग का पता लगाने के लिए एक C++ प्रोग्राम है। एल्गोरिदम Begin    Initialize the array elements with values from user input.    Initialize s = 0    Loop for i = 0 to       s = s + *(ptr + i)    Print the sum

  1. सी ++ प्रोग्राम सरणी का उपयोग करके स्टैक को लागू करने के लिए

    स्टैक एक सार डेटा संरचना है जिसमें तत्वों का संग्रह होता है। स्टैक LIFO तंत्र को लागू करता है यानी अंत में धकेले जाने वाले तत्व को पहले पॉप आउट किया जाता है। स्टैक में कुछ सिद्धांत संचालन हैं - पुश - यह स्टैक के शीर्ष पर डेटा मान जोड़ता है। पॉप - यह स्टैक के शीर्ष पर डेटा मान को हटा देता है