কম্পিউটার

C++ এ প্রদত্ত মানের থেকে ছোট বা সমান সমস্ত জাম্পিং নম্বর প্রিন্ট করুন


এই সমস্যায়, আমাদের একটি সংখ্যা 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

  1. C++ এ প্রদত্ত নোড থেকে k দূরত্বে সমস্ত নোড প্রিন্ট করুন

  2. C++ এ একটি মিন হিপে x মানের চেয়ে কম সব নোড প্রিন্ট করুন

  3. C++ এ 3 এবং 5 দ্বারা বিভাজ্য সমস্ত সংখ্যা প্রিন্ট করার প্রোগ্রাম

  4. C++ এ n এর থেকে কম বা সমান সমস্ত ফ্যাক্টরিয়াল সংখ্যা খুঁজুন