ধরুন, আমাদের পূর্ণসংখ্যা সম্বলিত দুটি অ্যারে আছে। একটি তালিকায় কিছু ইউনিট প্রস্থ বাক্সের উচ্চতা রয়েছে এবং অন্য অ্যারেতে গোডাউনের কক্ষের উচ্চতা রয়েছে। কক্ষগুলি 0...n নম্বরযুক্ত, এবং কক্ষগুলির উচ্চতা অ্যারের গোডাউনে তাদের নিজ নিজ সূচীতে দেওয়া আছে। গুদামে ঠেলে দেওয়া যাবে এমন বাক্সের সংখ্যা বের করতে হবে। কিছু জিনিস মাথায় রাখতে হবে,
-
বাক্সগুলি একটির উপর আরেকটি রাখা যাবে না।
-
বাক্সের ক্রম পরিবর্তন করা যেতে পারে।
-
বাক্সগুলি শুধুমাত্র বাম থেকে ডানে গোডাউনে রাখা হয়।
যদি একটি বাক্স ঘরের উচ্চতার চেয়ে লম্বা হয়, তবে বাক্সটি তার ডানদিকের সমস্ত বাক্স সহ গোডাউনে ঠেলে দেওয়া যাবে না।
সুতরাং, যদি ইনপুটটি বক্সের মত হয় =[4,5,6], গোডাউন =[4, 5, 6, 7], তাহলে আউটপুট হবে 1 শুধুমাত্র একটি বক্স ঢোকানো যাবে। প্রথম ঘরটি 4 আকারের এবং বাকিগুলি গোডাউনে ঠেলে দেওয়া যাবে না কারণ বাক্সগুলিকে প্রথম ঘরের মধ্যে দিয়ে ঠেলে দিতে হবে এবং এর দৈর্ঘ্য অন্যান্য বাক্সের তুলনায় ছোট৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
তালিকা বাক্সগুলি সাজান
-
curmin :=গোডাউনের প্রথম উপাদান সম্বলিত একটি নতুন তালিকা
-
cm :=curmin[0]
-
আমি রেঞ্জ 1 থেকে গোডাউনের আকারের জন্য, করুন
-
cur :=গোডাউন[i]
-
যদি cur <সেমি, তাহলে
-
cm :=cur
-
-
কারমিনের শেষে সেমি ঢোকান
-
-
i :=0
-
j :=গোডাউনের আকার -1
-
r :=0
-
যখন j>=0 এবং i <বাক্সের আকার, করুন
-
যদি curmin[j]>=বক্স[i], তাহলে
-
i :=i + 1
-
r :=r + 1
-
-
j :=j - 1
-
-
রিটার্ন r
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(boxes, godown): boxes.sort() curmin = [godown[0]] cm = curmin[0] for i in range(1, len(godown)): cur = godown[i] if cur < cm: cm = cur curmin.append(cm) i,j = 0, len(godown)-1 r = 0 while j >= 0 and i < len(boxes): if curmin[j] >= boxes[i]: i += 1 r += 1 j -= 1 return r print(solve([4,5,6], [4, 5, 6, 7]))
ইনপুট
[4,5,6], [4, 5, 6, 7]
আউটপুট
1