हमें संख्याओं का एक वृत्ताकार सरणी दिया गया है। एक गोलाकार सरणी वह है जिसमें तत्वों को इस तरह व्यवस्थित किया जाता है कि पहले तत्व को अंतिम तत्व के ठीक बगल में माना जाता है। इनका उपयोग कतारों को लागू करने के लिए किया जाता है।
प्रत्येक तत्व में समान या भिन्न अंकों की संख्या होती है। यदि आवश्यक हो तो तत्वों के रोटेशन का उपयोग करके, संख्याओं को संयोजित करके उच्चतम संभव संख्या बनाना लक्ष्य है। हम सभी तत्वों के सभी सबसे बाएं अंकों के बीच उच्चतम बाएं अंक को ढूंढकर ऐसा करेंगे। उच्चतम बाएं अंक वाली संख्या पहले स्थान पर होगी।
-
यदि यह पहले स्थान पर है, तो 1 से n-1 तक के सभी नंबरों को उसी रूप में रखा जाता है।
-
यदि यह कहीं बीच में है, और इसका सूचकांक i है, तो सभी अनुक्रमित i+1 से n-1 को पहले जोड़ा जाता है, उसके बाद अनुक्रमित 0 से i-1 तक।
-
यदि यह अंतिम है, तो इसके बाद 0 से i-1 तक के सभी अनुक्रमित जोड़ दिए जाते हैं।
इनपुट
Arr[] = { 121, 43, 65, 32 }
आउटपुट
Highest number: 653212143
स्पष्टीकरण - सबसे बड़ा बायां अंक 6 है। 65 को पहले स्थान पर रखें उसके बाद 32, फिर 121,43 पर। Arr[] एक गोलाकार सरणी है।
इनपुट
Arr[] = { 1101, 9, 321, 77 }
आउटपुट
Highest number: 9321771101
स्पष्टीकरण − सबसे बड़ा बायां अंक 9321771101 है। 9 को पहले स्थान पर रखें उसके बाद 321, फिर 77, 1101। जैसा कि Arr[] एक गोलाकार सरणी है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
ऐरे एआर [] संख्याओं को संग्रहीत करता है।
-
फ़ंक्शन लार्जेट्स (int arr [], int n) इनपुट के रूप में सरणी और इसकी लंबाई n लेता है और उच्चतम संख्या को प्रिंट करता है जिसे बनाया जा सकता है ..
-
वेरिएबल मैक्सएक्स का उपयोग संख्या को उच्चतम बाएं अंक के साथ स्टोर करने के लिए किया जाता है, जिसे 0 से शुरू किया जाता है।
-
Pos का उपयोग अधिकतम के सूचकांक को संग्रहीत करने के लिए किया जाता है।
-
i=0 से n तक प्रत्येक arr[i] के सबसे बाएं अंक को 10 से विभाजित करके जब तक कि यह 0 नहीं हो जाता है, तब तक ज्ञात करें। हर बार शेष इकाई के स्थान पर अंक का प्रतिनिधित्व करेगा।
-
यदि वर्तमान ऐसा अंक उच्चतम है, जब num==0, (मतलब रेम में सबसे बाईं ओर का अंक है), तो अपडेटमैक्स और पॉज़।
-
तत्वों को इंडेक्स पॉज़ से एरे के अंत तक और फिर इंडेक्स 0 से पॉज़ -1 तक प्रिंट करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; void Largest(int arr[], int n){ int maxx = 0; int pos = 0; //index of number with highest leftmost digit for (int i = 0; i < n; i++) { int num = arr[i]; // check for the last digit while (num!=0) { int rem = num % 10; num = num / 10; if (num == 0) { if (maxx < rem) { maxx = rem; pos = i; } } } } // print the largest number cout<<"Largest number by concatenation: "; for (int i = pos; i < n; i++) cout << arr[i]; for (int i = 0; i < pos; i++) cout << arr[i]; } int main(){ int Arr[] = { 12,34,56,98 }; int size=4; Largest(Arr,size); return 0; }
आउटपुट
Largest number by concatenation: 98123456