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

C++ में अंकों के समान सेट वाली अगली बड़ी संख्या ज्ञात कीजिए

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

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

इनपुट

N = "92534"

आउटपुट

92543

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

अगले बड़े तत्व को खोजने के लिए समस्या का एक सरल समाधान निम्नलिखित दृष्टिकोण से है -

  • संख्या को कम से कम महत्वपूर्ण बिट से सबसे महत्वपूर्ण बिट तक ले जाएं। और तब रुकें जब वर्तमान तत्व अंतिम तत्व से छोटा हो।

  • इसके बाद बचे हुए ऐरे में सबसे छोटे एलीमेंट को खोजें। और सबसे छोटी संख्या ज्ञात करें और उस संख्या से अदला-बदली करें।

  • फिर शेष सबअरे को सॉर्ट करें और आउटपुट लौटाएं।

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

उदाहरण

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
void findNextGreater(char number[], int n) {
   int i, j;
   for (i = n-1; i > 0; i--)
      if (number[i] > number[i-1])
         break;
   if (i==0) {
      cout<<"Next number is not possible";
      return;
   }
   int x = number[i-1], smallest = i;
   for (j = i+1; j < n; j++)
      if (number[j] > x && number[j] < number[smallest])
         smallest = j;
   char temp = number[smallest];
   number[smallest] = number[i-1];
   number[i-1] = temp;
   sort(number + i, number + n);
   cout<<number;
   return;
}
int main(){
   char number[] = "92534";
   int n = strlen(number);
   cout<<"The next number with same set of digits is ";
   findNextGreater(number, n);
   return 0;
}

आउटपुट

The next number with same set of digits is 92543

  1. C++ में समान संख्या में सेट बिट्स के साथ सन्निहित सरणी तत्वों की अधिकतम संख्या

    हमें पूर्णांक तत्वों की एक क्रमबद्ध सरणी के साथ दिया गया है और कार्य दो प्रमुख चीजों की गणना करना है यानी समान संख्या में सेट बिट्स वाले तत्व साथ ही, समान सेट बिट वाले तत्वों को प्रकृति में सन्निहित होना चाहिए। इनपुट int arr[] = { 5, 8, 1, 2, 9, 12} आउटपुट − समान संख्या में सेट बिट्स वाले सन्निह

  1. C++ में दी गई संख्या से बड़ा अगला पूर्ण वर्ग ज्ञात कीजिए

    मान लीजिए कि हमारे पास एक संख्या n है। हमारा कार्य n की अगली पूर्ण वर्ग संख्या ज्ञात करना है। अतः यदि संख्या n =1000 है, तो अगली पूर्ण वर्ग संख्या 1024 =322 है। इसे हल करने के लिए, हमें दी गई संख्या n का वर्गमूल प्राप्त होता है, फिर उसका तल लें, उसके बाद (floor value + 1) का वर्ग प्रदर्शित करें उदा

  1. N अंक संख्या ज्ञात कीजिए जो C++ में D से विभाज्य है

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