ধরুন আমাদের নোট নামে একটি অ্যারে রয়েছে যা গ্রাহকদের সারিতে রাখা বিভিন্ন টাকার নোটকে উপস্থাপন করে। তারা সবাই 50 টাকার টিকিট কেনার জন্য অপেক্ষা করছে। এখানে সম্ভাব্য নোট [50, 100 এবং 200]। আমরা লোকেদের কাছে টিকিট বিক্রি করতে পারব কি না তা আমাদের পরীক্ষা করতে হবে, প্রাথমিকভাবে আমাদের হাতে 0 টাকা আছে।
সুতরাং, যদি ইনপুটটি নোটের মত হয় =[50, 50, 100, 100], তাহলে প্রথম দুটির জন্য আউটপুট True হবে আমাদের কিছু ফেরত দিতে হবে না, কিন্তু এখন আমাদের কাছে দুটি 50 টাকার নোট আছে। তাই শেষ দুটির জন্য আমরা তাদের 50 টাকার নোট ফেরত দিতে পারি এবং সমস্ত টিকিট বিক্রি করতে পারি।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- freq :=একটি খালি মানচিত্র
- i :=0
- যখন আমি <নোটের আকার, কর
- যদি নোট[i] 50 এর মত হয়, তাহলে
- freq[50] :=freq[50] + 1
- অন্যথায় যখন নোট[i] 100 এর মত হয়, তাহলে
- freq[100] :=freq[100] + 1
- যদি freq[50] 0 হয়, তাহলে
- লুপ থেকে বেরিয়ে আসুন
- freq[50] :=freq[50] - 1
- অন্যথায়,
- যদি freq[100]> 0 এবং freq[50]> 0 হয়, তাহলে
- freq[100] :=freq[100] - 1
- freq[50] :=freq[50] - 1
- অন্যথায় যখন freq[50]>=3, তারপর
- freq[50] :=freq[50] - 3
- অন্যথায়,
- লুপ থেকে বেরিয়ে আসুন
- যদি freq[100]> 0 এবং freq[50]> 0 হয়, তাহলে
- i :=i + 1
- যদি নোট[i] 50 এর মত হয়, তাহলে
- যদি আমি নোটের আকারের সমান হয়, তাহলে
- সত্য ফেরান
- মিথ্যে ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
from collections import defaultdict def solve(notes): freq = defaultdict(int) i = 0 while i < len(notes): if notes[i] == 50: freq[50] += 1 elif notes[i] == 100: freq[100] += 1 if freq[50] == 0: break freq[50] -= 1 else: if freq[100] > 0 and freq[50] > 0: freq[100] -= 1 freq[50] -= 1 elif freq[50] >= 3: freq[50] -= 3 else: break i += 1 if i == len(notes): return True return False notes = [50, 50, 100, 100] print(solve(notes))
ইনপুট
[50, 50, 100, 100]
আউটপুট
True