আমাদের খেলনার দামগুলো একটি অ্যারে এবং হাতে টাকা 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