ধরুন আমাদের কাছে বক্স টাইপস নামে একটি 2D অ্যারে হিসাবে উপস্থাপিত বাক্সগুলির একটি সেট রয়েছে, যেখানে boxTypes[i]-এ দুটি উপাদান রয়েছে [টাইপ i-এর বাক্সের সংখ্যা, টাইপ i-এর প্রতি বক্সে ইউনিটের সংখ্যা]। এখন আমাদের আরও একটি মান k আছে, যা সেই ট্রাকে সর্বোচ্চ কতগুলি বাক্স রাখা যেতে পারে। যতক্ষণ বাক্সের সংখ্যা k অতিক্রম না করে ততক্ষণ আমরা ট্রাকে রাখার জন্য যেকোনো বাক্স নির্বাচন করতে পারি। আমাদের ট্রাকে রাখা যেতে পারে এমন সর্বোচ্চ মোট ইউনিটের সংখ্যা খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি boxTypes =[[2,4],[3,3],[4,2]], k =6 এর মত হয়, তাহলে আউটপুট হবে 19, কারণ সেখানে আছে
-
টাইপ 1 এর 2টি বাক্স এবং প্রতিটিতে 4টি ইউনিট রয়েছে
-
টাইপ 2 এর 3টি বাক্স এবং প্রতিটিতে 3টি ইউনিট রয়েছে
-
টাইপ 3 এর 4টি বাক্স এবং প্রতিটিতে 2টি ইউনিট রয়েছে
k =6 হিসাবে, আমরা টাইপ 1 এবং 2 এর সমস্ত বাক্স এবং টাইপ 3 এর শুধুমাত্র একটি বাক্স নিতে পারি, তাই সেখানে (2*4) + (3*3) + 2 =8 + 9 +2 =19 আইটেম থাকবে .
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
প্রতিটি বাক্সে উপস্থিত আইটেমের সংখ্যার উপর ভিত্তি করে বাক্সের প্রকারগুলি সাজান
-
মোট :=0, পূরণ করুন :=0
-
boxTypes-এ প্রতিটি i-এর জন্য করুন
-
যদি পূরণ করুন + i[0] <=k, তারপর
-
fill :=fill + i[0]
-
মোট :=মোট + i[0] * i[1]
-
-
অন্যথায়,
-
মোট :=মোট + (কে - ফিল) * i[1]
-
লুপ থেকে বেরিয়ে আসুন
-
-
-
মোট রিটার্ন
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def সমাধান(boxTypes, k):boxTypes.sort(key =lambda x :x[1], reverse =True) মোট =0 fill =0 in boxTypes:if fill + i[0] <=k :পূরণ +=i[0] মোট +=i[0] * i[1] অন্য:মোট +=(k - পূরণ) * i[1] বিরতি মোট বক্স প্রকার =[[2,4],[3,3 ],[4,2]]k =6 print(solve(boxTypes, k))
ইনপুট
<প্রে>[[2,4],[3,3],[4,2]], 6আউটপুট
19