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

C++ में समान अंकों के सेट के साथ N से छोटी सबसे बड़ी संख्या ढूंढें


इस समस्या में, हमें एक स्ट्रिंग N दी गई है जो एक संख्या को दर्शाती है। हमारा कार्य समान अंकों के सेट के साथ N से छोटी सबसे बड़ी संख्या ढूंढना है।

समस्या विवरण: हमें दी गई संख्या के सभी अंकों का उपयोग करके एक संख्या ढूंढनी है जो N से छोटी सबसे बड़ी संख्या हो।

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

इनपुट: N = “54314”

आउटपुट: 54341

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

समस्या का एक सरल समाधान संख्या के उस अंक को ढूंढना है जिसे सबसे बड़ी छोटी संख्या खोजने के लिए स्थानांतरित किया जा सकता है। अब, संख्या अपने दाएं उत्तराधिकारी से बड़ी होनी चाहिए ताकि उद्देश्य हल हो सके।

इसके लिए हम संख्या को दाएं से बाएं ट्रैवर्स करेंगे और अंतिम तत्वों से बड़े तत्व को ढूंढेंगे।

फिर दाएं उपसरणी में सबसे बड़े तत्व को ढूंढें, और इसे वर्तमान तत्व से बदलें। इसके बाद उपसरणी को अवरोही क्रम में सॉर्ट करें। यह आपका सबसे बड़ा छोटा तत्व होगा।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <bits/stdc++.h>
using namespace std;

void calcGreatestSmallerElement(string N, int size) {
    int i, j;
    for (i = size - 1; i > 0; i--)
        if (N[i] < N[i - 1])
            break;
    if (i == 0) {
        cout << "Previous number is not possible";
        return;
    }
    int x = N[i - 1], greatest = i;
    for (j = i; j < size; j++)
        if (N[j] < x && N[j] > N[greatest])
            greatest = j;
    swap(N[greatest], N[i - 1]);
    sort(N.begin() + i, N.begin() + size, greater<char>());
    cout<<"The Greatest smaller number with same set of digits is "<<N;
    return;
}

int main() {
    string N = "654232";
    int size = N.length();
    cout<<"The number is "<<N<<endl;
    calcGreatestSmallerElement(N, size);
    return 0;
}

आउटपुट

The number is 654232 The Greatest smaller number with same set of digits is 654223

  1. - दिए गए अंकों से बनने वाली सबसे बड़ी संख्या खोजें C++ में

    मान लीजिए हमारे पास अंकों का एक ऐरे है। हमें ऐरे के सभी अंकों का उपयोग करके प्राप्त की जा सकने वाली अधिकतम संख्या खोजनी है। तो यदि ऐरे [3, 3, 9, 6, 2, 5] जैसा है, तो अधिकतम संख्या 965332 हो सकती है। समस्या से, हम देख सकते हैं कि हम अंकों को गैर-बढ़ते क्रम में आसानी से सॉर्ट कर सकते हैं, फिर उन्हें प

  1. - C++ में दी गई संख्या से कम या बराबर सबसे बड़ा विशेष अभाज्य संख्या ज्ञात करें

    मान लीजिए हमारे पास एक संख्या n है। हमें सबसे बड़ा विशेष अभाज्य संख्या ढूंढनी है जो N से कम या बराबर हो। विशेष अभाज्य संख्या एक ऐसी संख्या है, जिसे एक के बाद एक अंक रखकर बनाया जा सकता है, ताकि सभी परिणामस्वरूप संख्याएं अभाज्य हों। यहां हम एराटोस्थनीज की छलनी का उपयोग करेंगे। हम संख्या n तक छलनी सरणी

  1. - C++ प्रोग्राम: N अंकों की संख्या ज्ञात करना जो D से विभाज्य हो

    मान लें हमारे पास दो संख्याएं N और D हैं। हमें N अंकों की संख्या ज्ञात करनी है, जो D से विभाज्य हो। यदि N 3 है, और D 5 है, तो संख्या 500 हो सकती है। इसे आसानी से हल किया जा सकता है। यदि D 10 है और N 1 है, तो यह असंभव होगा। हम D रख सकते हैं, और मान लें D में m अंक हैं, फिर N - m संख्या में 0 जोड़कर इ