मान लीजिए हमारे पास दो सूचियाँ हैं, वे हैं cores और tasks। cores[i] iवें सर्वर में उपलब्ध कोर की संख्या दर्शाता है। और tasks[i] उस कार्य को निष्पादित करने के लिए आवश्यक कोर की संख्या दर्शाता है। प्रत्येक कार्य को केवल एक सर्वर में चलाया जाना चाहिए। और एक सर्वर में चलाने के लिए कई कार्य हो सकते हैं। हमें जांचना है कि क्या दिए गए कोर के साथ सभी कार्यों को चलाना संभव है या नहीं।
इसलिए, यदि इनपुट है cores = [10, 7], tasks = [7, 3, 2, 2, 1], तो आउटपुट होगा True, क्योंकि हम tasks[0] और tasks[1] को पहले सर्वर में कोर 10 के साथ रख सकते हैं, और शेष कार्यों को दूसरे सर्वर पर कोर 7 के साथ रख सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
solve()फ़ंक्शन परिभाषित करें। यहcores, tasksलेगा:- यदि
tasksसेट खाली है, तो:Trueलौटाएं
iके लिए 0 सेcoresके आकार - 1 तक की रेंज में, करें:- यदि
cores[i] >= tasks[0], तो:cores[i] := cores[i] - tasks[0]
- यदि
solve(cores, tasks सूची पहले कार्य को छोड़कर)सत्य है, तो:Trueलौटाएं
cores[i] := cores[i] + tasks[0]
- यदि
Falseलौटाएं
- यदि
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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