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