इस समस्या में, हमें एक नंबर n दिया जाता है और हमें n से छोटे या बराबर सभी जंपिंग नंबर प्रिंट करने होते हैं।
जंपिंग नंबर वे संख्याएँ हैं जिनके आसन्न अंक केवल एक से भिन्न होते हैं। कुछ जंपिंग नंबर 4565, 98, 7 हैं। सभी सिंगल-डिजिट नंबर को जंपिंग नंबर माना जाता है। 235 एक कूदने वाली संख्या नहीं है।
अब, समस्या को समझने के लिए एक उदाहरण लेते हैं
Input: N = 32 Output: 0 1 2 3 4 5 6 7 8 9 10 12 21 23 32
इस समस्या को हल करने के लिए, हम एक ग्राफ मानेंगे जहां 0 प्रारंभिक नोड है और इसे सभी पहुंच योग्य नोड्स तक ले जाया जाता है। आप BFS . का उपयोग करके इसे पार कर सकते हैं या डीएफएस . यह ग्राफ़ एक ऐसी स्थिति का उपयोग करके बनाया गया है जो मानों को उछलती हुई संख्या बनाती है।
उदाहरण
नीचे दिया गया कोड हमारे समाधान को लागू करता है -
#include <bits/stdc++.h> using namespace std; void traverse(int N, int num) { queue<int> q; q.push(num); while (!q.empty()) { num = q.front(); q.pop(); if (num <= N) { cout << num << " "; int last_dig = num % 10; if (last_dig == 0) q.push((num * 10) + (last_dig + 1)); else if (last_dig == 9) q.push((num * 10) + (last_dig - 1)); else { q.push((num * 10) + (last_dig - 1)); q.push((num * 10) + (last_dig + 1)); } } } } void printJumpingNumber(int N) { cout<<0<<" "; for (int i = 1; i <= 9 && i <= N; i++) traverse(N, i); } int main() { int N = 54; cout<<"Jumping Numbers less than "<<N<<" are :\n"; printJumpingNumber(N); return 0; }
आउटपुट
Jumping Numbers less than 54 are − 0 1 10 12 2 21 23 3 32 34 4 43 45 5 54 6 7 8 9