ধরুন আমাদের কাছে ওজন নামক সংখ্যার একটি তালিকা আছে যা মানুষের ওজনকে প্রতিনিধিত্ব করছে এবং একটি মান সীমা একটি রকেট জাহাজের ওজন সীমা নির্ধারণ করে। এখন প্রতিটি রকেটশিপ সর্বোচ্চ দুই জনকে নিতে পারে। প্ল্যানেটে সবাইকে উদ্ধার করতে আমাদের ন্যূনতম সংখ্যক রকেট জাহাজ খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি ওজনের মত হয় =[৩০০, ৪০০, ৩০০], সীমা =৬০০, তাহলে আউটপুট হবে 2, কারণ দুটি লোককে নিতে একটি রকেট জাহাজ লাগবে যার প্রতিটির ওজন 300, এবং অন্যটি নিতে হবে। যার ওজন ৪০০।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
তালিকার ওজন বাছাই করুন
-
cnt :=0
-
ওজন খালি না থাকা অবস্থায়, করুন
-
x :=ওজন থেকে শেষ উপাদান মুছে দিন
-
যদি ওজন খালি না হয় এবং ওজন [0] <=সীমা − x, তাহলে
-
ওজন থেকে প্রথম উপাদান মুছুন
-
-
cnt :=cnt + 1
-
-
ফেরত cnt
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ(পাইথন)
class Solution: def solve(self, weights, limit): weights.sort() cnt = 0 while weights: x = weights.pop() if weights and weights[0] <= limit - x: weights.pop(0) cnt += 1 return cnt ob = Solution() weights = [300, 400, 300] limit = 600 print(ob.solve(weights, limit))
ইনপুট
[300, 400, 300], 600
আউটপুট
2