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

C++-এ Y-র চেয়ে ছোট নম্বর দিয়ে মিনিমাম সেট বের করা


সমস্যা বিবরণ

কনsekutিভ ডিজিটের একটি স্ট্রিং এবং একটি নম্বর Y দেওয়া আছে। টাস্ক হলো মিনিমাম সেটের সংখ্যা বের করা যাতে প্রতিটি সেট নিচের রুল মেনে চলে:

  • সেটে কনsekutিভ নম্বর থাকবে
  • কোনো ডিজিট একবারই ব্যবহার করা যাবে
  • সেটের নম্বর Y-র চেয়ে বড় হবে না

উদাহরণ

যদি str = "1234" এবং Y = 20 হয়, তবে উত্তর ৩ কারণ নিচের সেটগুলো তৈরি হয়:

{12} {3} এবং {4}

অ্যালগরিদম

  • স্ট্রিংকে নম্বরে কনভার্ট করুন
  • যদি নম্বরটি Y-র চেয়ে বড় না হয়, তবে f = 1 চিহ্নিত করুন
  • যদি নম্বর Y-এর চেয়ে বড় হয়, তবে f = 1 হলে কাউন্ট বড়ান এবং f = 0 রি-ইনিশিয়ালাইজ করুন এবং num = s[i]-'0' বা num = 0 করুন
  • স্ট্রিং সম্পূর্ণ ইটারেট করার পর, f = 1 হলে কাউন্ট বড়ান

উদাহরণ

#include <iostream> 
#include <string> 
using namespace std; 

int getMinSets(string str, int y) { 
    int cnt = 0; 
    int num = 0; 
    int l = str.length(); 
    int f = 0; 
    for (int i = 0; i < l; ++i) { 
        num = num * 10 + str[i] - 48; 
        if (num <= y) { 
            f = 1; 
            continue; 
        } 
        if (f) { 
            ++cnt; 
        } 
        num = str[i] - '0'; 
        f = 0; 
        if (num <= y) { 
            f = 1; 
        } else { 
            num = 0; 
        } 
    } 
    if (f) { 
        ++cnt; 
    } 
    return cnt; 
} 

int main() { 
    string str = "1234"; 
    int y = 20; 
    cout << "Minimum sets = " << getMinSets(str, y) << endl; 
    return 0; 
}

আউটপুট

যখন আপনি উপরের প্রোগ্রাম কম্পাইল ও এক্সিকিউট করবেন। এটি নিচের আউটপুট জেনারেট করবে:

Minimum sets = 3

  1. সি++-এ ডাডেনি নম্বর

  2. সংখ্যার চেয়ে ছোট সব প্রাইম কোয়াড্রাপলেট প্রিন্ট করা C++-তে

  3. N থেকে ছোট বা সমান সংখ্যা যাদের যোগফল S হয় এমন ন্যূনতম সংখ্যা C++-তে

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