इस समस्या में, हमें एक पूर्णांक N दिया गया है और हमने N से कम सभी संख्याओं को अधिकतम 2 अद्वितीय अंकों के साथ मुद्रित किया है अर्थात संख्या बनाने के लिए अधिकतम 2 भिन्न अंकों का उपयोग किया जा सकता है ।
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं -
Input: N = 17 Output: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
इस समस्या को हल करने के लिए, हम उन सभी संख्याओं को उत्पन्न करेंगे जिनमें केवल दो अद्वितीय अंक होंगे। हमारी संख्या उत्पन्न करने की प्रक्रिया 0 से शुरू होती है और तब समाप्त होती है जब हमारी संख्या N के बराबर या उससे अधिक होती है। दो अद्वितीय चुने हुए के लिए, num*10+i और num*10+j का उपयोग करके पुनरावर्ती रूप से संख्याएं उत्पन्न करें। . इस प्रक्रिया में कुछ डुप्लिकेट नंबर उत्पन्न हो सकते हैं। इसलिए, हम सेट . का उपयोग कर सकते हैं इससे बचने के लिए नंबर स्टोर करें।
उदाहरण
यह कार्यक्रम समस्या को हल करने के लिए हमारे दृष्टिकोण के कार्यान्वयन को दर्शाता है
#include <bits/stdc++.h>
using namespace std;
set<int> numbers;
void generateNumbers(int n, int num, int i, int j){
if (num > 0 && num < n)
numbers.insert(num);
if (num >= n)
return;
if (num*10+i > num)
generateNumbers(n, num*10+i, i, j);
generateNumbers(n, num*10+j, i, j);
}
void printUniqueBitNumber(int n){
for (int i = 0; i <= 9; i++)
for (int j = i + 1; j <= 9; j++)
generateNumbers(n, 0, i, j);
cout<<"The numbers are generated are : ";
while (!numbers.empty()) {
cout<<*numbers.begin()<<" ";
numbers.erase(numbers.begin());
}
}
int main(){
int n = 17;
printUniqueBitNumber(n);
return 0;
} आउटपुट
The numbers are generated are : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16