इस समस्या में, हमें n तत्वों का एक सरणी arr[] दिया जाता है। हमारा काम है ऐरे के अधिकतम तत्वों को मूल क्रम में खोजना।
हमें सरणी के अधिकतम k तत्वों को खोजने और फिर प्रिंट करने की आवश्यकता है क्योंकि उन्हें मूल रूप से अनुक्रमित किया गया था।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: एआर [] ={5, 1, 3, 6, 2}, के =2पी>
आउटपुट: 5, 6
स्पष्टीकरण:
सरणी के सबसे बड़े दो तत्व 6 और 5 हैं। लेकिन मूल सरणी में 6 से पहले 5 आता है इसलिए हमने उस तरह से मुद्रित किया है।
समाधान दृष्टिकोण
समस्या को हल करने के लिए, और k तत्वों को मूल क्रम में प्रिंट करें।
इसके लिए हम एक decArray बनाएंगे जो arr[] के तत्वों को अवरोही क्रम में संग्रहीत करेगा। फिर हम मूल सरणी को पार करेंगे और decArray[] का उपयोग करके k सबसे बड़े तत्व को प्रिंट करेंगे।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <bits/stdc++.h> using namespace std; bool seachVal(int decArr[], int k, int ele){ for(int i = 0; i < k; i++){ if( decArr[i] == ele) return true; } return false; } void printKMaxEle(int arr[], int k, int n) { int decArr[n]; for(int i = 0; i < n ; i++){ decArr[i] = arr[i]; } sort(decArr, decArr + n, greater<int>()); for (int i = 0; i < n; ++i) if ( seachVal(decArr, k, arr[i]) ) cout<<arr[i]<<" "; } int main() { int arr[] = { 15, 1, 3, 6, 2, 34, 8, 9 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 3; cout<<k<<" maximum elements of the array in their original order are \n"; printKMaxEle(arr, k, n); return 0; }
आउटपुट
3 maximum elements of the array in their original order are 15 34 9