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

अधिकतम एक स्वैप ऑपरेशन का उपयोग करके सबसे बड़ी संख्या बनाएं C++

इस समस्या में, हमें एक धनात्मक पूर्णांक दिया जाता है। हमारा काम अधिकतम एक स्वैप ऑपरेशन का उपयोग करके सबसे बड़ी संख्या बनाने के लिए एक प्रोग्राम बनाना है।

हम मौजूदा संख्या के अंकों का उपयोग करके एक नया नंबर बनाएंगे।

बनाई गई सबसे बड़ी संख्या में मौजूदा संख्या से केवल एक अंक की अदला-बदली हो सकती है।

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

Input: n = 63512
Output: 65312

समाधान दृष्टिकोण

समस्या को हल करने की एक विधि दी गई संख्या के अंकों की जोड़ी को स्वैप करके बनाई गई सभी संख्याओं को ढूंढकर है। इन सभी अदला-बदली अंकों में से, सबसे बड़ी संख्या लौटा दी जाती है। इसके लिए हम नंबर को स्ट्रिंग और स्वैप पोजीशन में बदल देंगे।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include <iostream>
using namespace std;

int findLargestNumSwapDig(int N){

   string strNum = to_string(N);
   string temp = strNum;
   for (int i = 0; i < strNum.size(); i++) {
      for (int j = i + 1; j < strNum.size(); j++) {
         swap(strNum[i], strNum[j]);
         if (stoi(strNum) > stoi(temp))
            temp = strNum;
         swap(strNum[i], strNum[j]);
      }
   }
   return stoi(temp);
}
int main(){
   int num = 792156;
   cout<<"The number is "<<num<<endl;
   cout<<"The largest number created by swapping one digit is "<<findLargestNumSwapDig(num) << endl;
   return 0;
}

आउटपुट

The number is 792156
The largest number created by swapping one digit is972156

एक और तरीका

समस्या को हल करने के लिए एक और तरीका स्वैप ढूंढना है जो सबसे बड़ी संभव संख्या में योगदान देता है। इसके लिए हम बाएं से दाएं नंबर को स्कैन करेंगे। और फिर पहले जोड़े के रूप में स्वैप करें जो अगला अंक पिछले अंक से बड़ा है। इस स्वैप के परिणामस्वरूप सबसे बड़ी संख्या होगी।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include <iostream>
using namespace std;

int findLargestNumSwapDig(int N){

   int currMaxDig = -1;
   int currMaxInd = -1;
   int lSwap = -1;
   int rSwap = -1;

   string strNum = to_string(N);
   for (int i = strNum.size() - 1; i >= 0; i--) {

      if (strNum[i] > currMaxDig) {
         currMaxDig = strNum[i];
         currMaxInd = i;
         continue;
      }
      if (strNum[i] < currMaxDig) {
         lSwap = i;
         rSwap = currMaxInd;
      }
   }
   if (lSwap == -1)
      return N;
   swap(strNum[lSwap], strNum[rSwap]);
   return stoi(strNum);
}
int main(){
   int num = 792156;
   cout<<"The number is "<<num<<endl;
   cout<<"The largest number created by swapping one digit is "<<findLargestNumSwapDig(num) << endl;
   return 0;
}

आउटपुट

The number is 792156
The largest number created by swapping one digit is972156

  1. C++ का उपयोग करके पंचकोणीय पिरामिड संख्या ज्ञात कीजिए

    एक पंचकोणीय पिरामिड संख्या एक पंचकोणीय आधार पिरामिड में मदों की संख्या के बराबर होती है। नीचे कुछ पंचकोणीय संख्याओं को देखें। N तक पंचकोणीय संख्याओं का योग Nवीं पंचकोणीय पिरामिड संख्या के बराबर होता है। इस लेख में, हम उदाहरण के लिए, Nth पंचकोणीय पिरामिड संख्या खोजने पर चर्चा करेंगे Input : N = 4

  1. C++ का उपयोग करके एक स्ट्रिंग के सबस्ट्रिंग की संख्या ज्ञात करें

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu

  1. C++ . का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात कीजिए

    बिंदु X और Y के बीच मध्यवर्ती ट्रेन स्टेशनों की संख्या n है। गिनें कि अलग-अलग तरीकों से ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई भी दो स्टेशन एक दूसरे के बगल में नहीं हैं। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या का पता लगाने के लिए हर संभव तरीके की व्याख्या क