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

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

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

इनपुट: arr[] = {3, 1, 5, 6, 3}
यदि हम दिए गए तरीके से तत्वों का चयन करते हैं, तो हमारे पॉइंट्स होंगे
= 3*0 + 1*1 + 5*2 + 6*3 + 3*4
= 41

पॉइंट्स को अधिकतम करने के लिए हमें तत्वों का चयन क्रम {1, 3, 3, 5, 6} में करना होगा
= 1*0 + 3*1 + 3*2 + 5*3 + 6*4
= 48 (अधिकतम)

आउटपुट: 48

इनपुट: arr[] = {2, 4, 7, 1, 8}
आउटपुट: 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]);
   
   // ऐरे को सॉर्ट करना
   sort(arr, arr + n);
   
   int points = 0;
   
   // ऐरे को पार करना और पॉइंट्स की गणना करना
   for (int i = 0; i < n; i++) {
      points += arr[i] * i;
   }
   
   cout << "अधिकतम पॉइंट्स: " << points;
   return 0;
}

आउटपुट

अधिकतम पॉइंट्स: 63

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

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

निष्कर्ष

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

  1. - C++ STL का उपयोग करके ऐरे का गुणनफल

    यह ऐरे गुणनफल ज्ञात करने के लिए C++ प्रोग्राम का एक उदाहरण है। एल्गोरिदम Begin ऐरे के मान इनिशियलाइज़ करें। ऐरे का गुणनफल लौटाने के लिए उपयोगकर्ता परिभाषित फंक्शन accumulate को कॉल करें। समाधान प्रिंट करें। End. उदाहरण कोड #include <iostream> #include <numeric> using names

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

    यह पॉइंटर का उपयोग करके ऐरे तत्वों का योग ज्ञात करने के लिए एक C++ प्रोग्राम है। एल्गोरिदम Begin उपयोगकर्ता इनपुट से मानों के साथ ऐरे तत्वों को इनिशियलाइज़ करें। s = 0 इनिशियलाइज़ करें i = 0 से लूप s = s + *(ptr + i) चर s में योग मान प्रिंट करें। End उदाहरण कोड #include &l

  1. - C++ प्रोग्राम: ऐरे का उपयोग करके स्टैक कार्यान्वयन

    ऐरे आधारित स्टैक निश्चित आकार की सरणी और top सूचकांक का उपयोग करके स्टैक कार्यान्वयन। LIFO सिद्धांत का पालन करता है। C++ प्रोग्राम उदाहरण = MAX - 1) cout << Stack Overflow << endl; else { top++; stack[top] = val; } } void pop() { if (top = 0; i--)