ধরুন আমাদের দুটি তালিকা আছে, সেগুলো হল কোর এবং টাস্ক। কোর[i] ith সার্ভারে উপলব্ধ কোরের সংখ্যা নির্দেশ করে। এবং কার্যগুলি [i] সেই কার্য সম্পাদনের জন্য প্রয়োজনীয় কোরের সংখ্যা নির্দেশ করে। প্রতিটি কাজ শুধুমাত্র একটি সার্ভারে চালানো আবশ্যক। এবং একটি সার্ভার চালানোর জন্য একাধিক কাজ থাকতে পারে। প্রদত্ত কোর দিয়ে সমস্ত কাজ চালানো সম্ভব কিনা তা আমাদের পরীক্ষা করতে হবে।
সুতরাং, যদি ইনপুটটি কোর =[10, 7] টাস্ক =[7, 3, 2, 2, 1] এর মতো হয়, তবে আউটপুটটি সত্য হবে, কারণ আমরা প্রথমে টাস্ক[0] এবং কাজগুলি[1] রাখতে পারি কোর 10 সহ সার্ভার, এবং কোর 7 সহ দ্বিতীয় সার্ভারে অবশিষ্ট কাজ।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন সংজ্ঞায়িত করুন solve()। এটি কোর, কাজগুলি গ্রহণ করবে
- যদি টাস্ক সেট খালি থাকে, তাহলে
- সত্য ফেরান
- আমি রেঞ্জ 0 থেকে কোরের আকার - 1 এর জন্য, কর
- যদি কোর[i]>=টাস্ক[0], তাহলে
- কোর[i] :=কোর[i] - কাজ[0]
- যদি সমাধান (কোর, প্রথম টাস্ক ছাড়া কাজের তালিকা) সত্য হয়, তাহলে
- সত্য ফেরান
- কোর[i] :=কোর[i] + কাজ[0]
- যদি কোর[i]>=টাস্ক[0], তাহলে
- মিথ্যে ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(cores, tasks): if not tasks: return True for i in range(len(cores)): if cores[i] >= tasks[0]: cores[i] -= tasks[0] if solve(cores, tasks[1:]): return True cores[i] += tasks[0] return False cores = [10, 7] tasks = [7, 3, 2, 2, 1] print(solve(cores, tasks))
ইনপুট
[10, 7], [7, 3, 2, 2, 1]
আউটপুট
True