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

स्वैप करके अधिकतम संख्या


इस समस्या में, एक धनात्मक पूर्णांक स्ट्रिंग दी गई है, हमें विभिन्न स्थानों में अंकों के k बार की अदला-बदली करके क्रमपरिवर्तन का पता लगाना है जिसका मान अधिकतम है।

हम इस समस्या को एक अंक चुनकर हल करेंगे और अधिकतम संख्या खोजने के लिए इसे एक बार में एक के बाद के अंकों के साथ स्वैप करेंगे। हम प्रक्रिया को k बार दोहराते हैं। बैकट्रैकिंग रणनीति यहां काम कर रही है क्योंकि जब हमें कोई संख्या मिलती है जो पिछले मान से अधिक नहीं है, तो हम पुराने मान पर वापस जाते हैं और फिर से जांचते हैं।

इनपुट और आउटपुट

Input:
A number of multiple digits.
The input is: 129814999
Output:
The maximum value from these digits by swapping them.
The output is: 999984211

एल्गोरिदम

maxNum(number, swaps, maxNumber)

इनपुट - एक स्ट्रिंग के रूप में संख्या, स्वैप की संख्या और अधिकतम संख्या स्ट्रिंग।

आउटपुट - सबसे बड़ा मान प्राप्त करने के लिए अधिकतम संख्या अपडेट करें।

Begin
   if swaps = 0, then
      return
   n := number of digits in the number
   for i := 0 to n-2, do
      for j := i+1 to n-1, do
         if number[i] < number[j], then
            exchange number[i] and number[j]
            if number is greater than maxNumber, then
               maxNumber := number
            maxNum(number, swaps-1, maxNumber)
            exchange number[i] and number[j] again for backtrack
      done
   done
End

उदाहरण

#include <iostream>
using namespace std;

void maxNum(string str, int swaps, string &max) {
   if(swaps == 0)        //when no swaps are left
      return;
   int n = str.length();

   for (int i = 0; i < n - 1; i++) {        //for every digits og given number
      for (int j = i + 1; j < n; j++) {
         if (str[i] < str[j]) {             //when ith number smaller than jth number
            swap(str[i], str[j]);
            if (str.compare(max) > 0)      //when current number is greater, make it maximum
               max = str;
            maxNum(str, swaps - 1, max);   //go for next swaps
            swap(str[i], str[j]);        //when it fails, reverse the swapping
         }
      }
   }
}

int main() {
   string str = "129814999";
   int swapNumber = 4;
   string max = str;
   maxNum(str, swapNumber, max);
   cout <<"The given number is: " <<str << endl;
   cout <<"The maximum number is: "<< max << endl;
}

आउटपुट

The given number is: 129814999
The maximum number is: 999984211

  1. जावास्क्रिप्ट संख्या समारोह

    जावास्क्रिप्ट नंबर () फ़ंक्शन किसी ऑब्जेक्ट मान को उसके संबंधित संख्यात्मक मान के तर्क के रूप में परिवर्तित करता है। जावास्क्रिप्ट नंबर () फ़ंक्शन के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta

  1. जावास्क्रिप्ट में संख्या पैटर्न

    हमें एक जावास्क्रिप्ट और एचटीएमएल प्रोग्राम लिखना आवश्यक है जो उपयोगकर्ता को टेक्स्ट इनपुट और बटन प्रदान करता है। जब उपयोगकर्ता इनपुट में कोई मान दर्ज करता है, जैसे 5, और बटन पर क्लिक करता है, तो हमें स्क्रीन पर निम्न पैटर्न प्रिंट करना चाहिए। (एन =5 के लिए) 01 01 02 01 02 03 01 02 03 04 01 02 03 0

  1. HTML DOM इनपुट नंबर अधिकतम संपत्ति

    HTML DOM इनपुट नंबर अधिकतम प्रॉपर्टी लौटाता है और HTML दस्तावेज़ में टाइप =नंबर के इनपुट फ़ील्ड की अधिकतम विशेषता के मान को संशोधित करता है। सिंटैक्स निम्नलिखित वाक्य रचना है - रिटर्निंग अधिकतम object.max 2. अधिकतम संशोधित करना object.max = “number” उदाहरण आइए हम इनपुट संख्या