दिया गया N , ए , और B . A . की समान संख्या के साथ N से बड़ी संख्या ज्ञात कीजिए और बी अंक। आइए एक उदाहरण देखें।
N = 1234 A = 2 B = 3
हमें दी गई अंकों की संख्या की हर संभावना की जांच करने की आवश्यकता है। संख्या बनाने के लिए दो अंक हैं। और संख्या में प्रत्येक अंक की गणना समान होनी चाहिए।
एल्गोरिदम
-
प्रारंभिक ए, बी, और एन.
-
एक पुनरावर्ती क्रिया लिखें।
-
जांचें कि क्या वर्तमान संख्या N . से अधिक है और इसकी समान संख्या A . है और बी अंक।
-
यदि उपरोक्त शर्त पूरी होती है तो नंबर लौटाएं।
- अंक A को परिणाम में जोड़ें।
- परिणाम में अंक B जोड़ें।
- उपरोक्त दो में से न्यूनतम संख्या के साथ फ़ंक्शन को पुनरावर्ती रूप से कॉल करें।
-
कार्यान्वयन
C++ में उपरोक्त एल्गोरिथम का कार्यान्वयन निम्नलिखित है
#include <bits/stdc++.h> using namespace std; long getNextGreaterElement(long result, int A, int A_Count, int B, int B_Count, int N) { if (result > 1e11) { return 1e11; } if (A_Count == B_Count && result >= N) { return result; } return min(getNextGreaterElement(result * 10 + A, A, A_Count + 1, B, B_Count, N), getNextGreaterElement(result * 10 + B, A, A_Count, B, B_Count + 1, N)); } int main() { int N = 1234; int A = 2; int B = 3; cout << getNextGreaterElement(0, A, 0, B, 0, N) << endl; return 0; }
आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
2233