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

C++-এ টাকা K দিয়ে সর্বোচ্চ খেলনা কেনার পদ্ধতি

আমাদের খেলনার দামগুলো একটি অ্যারে এবং হাতে টাকা K দেওয়া আছে। লক্ষ্য হলো সেই টাকা দিয়ে সর্বোচ্চ কতগুলো খেলনা কেনা যায়। প্রতিটি উপাদান একক খেলনার দাম। অ্যারে সর্ট করে ছোট দামের খেলনা আগে কিনে সর্বোচ্চ সংখ্যা বেড়ানো।

ইনপুট

toyprices[]= { 10, 20, 12, 15, 50, 30 } K=50

আউটপুট

Maximum no. of toys that can be purchased : 3

ব্যাখ্যা: দাম সর্ট করলে: {10, 12, 15, 20, 30, 50}। প্রথম ১০ টাকা দিয়ে (বাকি ৪০), دوم ১২ টাকা (বাকি ২৮), তৃতীয় ১৫ টাকা (বাকি ১৩)। পরবর্তী দাম ২০ > ১৩, তাই মোট ৩টি।

ইনপুট

toyprices[]= { 50,40,30,20,10 } K=25

আউটপুট

Maximum no. of toys that can be purchased : 1

ব্যাখ্যা: ২৫ > ১০,২০ কিন্তু ১০+২০=৩০ > ২৫, তাই শুধু ১টি কেনা যায়।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • toyprice[] অ্যারে দাম স্টোর।
  • maxToys(int price[], int N, int K) ফাংশন দাম, লেন্থ এবং টাকা নেয়।
  • toycount = 0, spent = 0।
  • price[] অ্যাসেন্ডিং অর্ডারে সর্ট করা।
  • সबसे কম দাম থেকে ট্র্যাভার্স: spent + price[i] <= K হলে spent আপডেট, toycount++।
  • অন্যথায় ব্রেক (কারণ সর্টেড)۔
  • toycount রিটার্ন।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

int maxToys(int price[], int N, int K){
    int toycount = 0;
    int spent = 0;
    sort(price, price + N);
    for (int i = 0; i < N; i++) {
        if (spent + price[i] <= K){
            spent += price[i];
            toycount++;
        } else
            break;
    }
    return toycount;
}

int main(){
    int budget = 100;
    int toyprice[] = { 10, 120, 50, 11, 20, 100, 10, 90, 12, 15 };
    int N = 10;
    cout << "Maximum no. of toys that can be purchased : " << maxToys(toyprice, N, budget);
    return 0;
}

আউটপুট

Maximum no. of toys that can be purchased : 6
  1. C++ প্রোগ্রাম: গ্রাফ থেকে এজ মুছে স্কোর সর্বনিম্ন করায় সর্বোচ্চ কমতি

  2. C++-এ থ্রেশহোল্ড দূরত্বে সবচেয়ে কম প্রতিবেশী город খুঁজে বের করা

  3. সি++ প্রোগ্রাম: সংখ্যা বিভাজ্য করে এমন অঙ্কগুলোর গণনা (Count of Digits Dividing the Number)

  4. সি++-এ যেসব ফাংশন ওভারলোড করা যায় না