প্রতিটি সার্ভারের কোর সংখ্যা এবং প্রতিটি টাস্কের প্রয়োজনীয় কোর দেওয়া আছে। প্রতিটি টাস্ক শুধু এক সার্ভারে চলবে, কিন্তু এক সার্ভারে একাধিক টাস্ক চলতে পারে। সব টাস্ক এক্সিকিউট করা সম্ভব কিনা বের করুন।
ইনপুট উদাহরণ
cores = [10, 7]
tasks = [7, 3, 2, 2, 1]
আউটপুট: True (সার্ভার ১: 7+3=10, সার্ভার ২: 2+2+1=5 ≤ 7)
অ্যালগরিদম
ব্যাকট্র্যাকিং ব্যবহার করে সব টাস্ককে সার্ভারগুলোর মধ্যে বিতরণ করার চেষ্টা করা হয়। যদি কোনো বিন্যাস কাজ করে তবে True।
পাইথন কোড
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)) # True
ব্যাখ্যা
এটি Bin Packing সমস্যা। ব্যাকট্র্যাকিং এক্সপোনেনশিয়াল টাইম নেয়। বড় ইনপুটের জন্য হিউরিস্টিক বা DP ব্যবহার করা উচিত।