এই সমস্যায়, আমাদের একটি সংখ্যা 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 ব্যবহার করে এটি অতিক্রম করতে পারেন অথবা DFS . এই গ্রাফটি এমন একটি শর্ত ব্যবহার করে তৈরি করা হয়েছে যা মান জাম্পিং নম্বর করে।
উদাহরণ
নীচের কোডটি আমাদের সমাধান প্রয়োগ করে −
#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