কম্পিউটার টিউটোরিয়াল

C++-এ দেওয়া মান থেকে ছোট বা সমান সব জাম্পিং নাম্বার প্রিন্ট করা

এই সমস্যায় একটি সংখ্যা n দেওয়া আছে। আমাদের n থেকে ছোট বা সমান সব জাম্পিং নাম্বার প্রিন্ট করতে হবে।

জাম্পিং নাম্বার হলো সেই সংখ্যা যেনের সন্নিহিত অঙ্কগুলো পার্থক্য শুধু ১। কিছু জাম্পিং নাম্বার: 4565, 98, 7। সব একক অঙ্কের সংখ্যাকে জাম্পিং নাম্বার মনে করা হয়। 235 জাম্পিং নাম্বার নয়।

উদাহরণ

ইনপুট: N = 32
আউটপুট: 0 1 2 3 4 5 6 7 8 9 10 12 21 23 32

এই সমস্যাটি সমাধানের জন্য একটি গ্রাফ ধরে নেওয়া হবে যেখানে ০ হচ্ছে শুরুর নোড এবং সেটি থেকে সব পৌঁছানো যাবে এমন নোডগুলোর কাছে ট্রাভার্স করা হবে। এটি 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++)

  4. C++ ব্যবহার করে n-র চেয়ে ছোট বা সমান সব ফ্যাক্টোরিয়াল নম্বর বের করা