मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहते हैं, हमें यह जांचना होगा कि क्या हम संख्याओं को दो समूहों में विभाजित कर सकते हैं जहां दोनों समूहों में तत्वों का योग समान है।
इसलिए, यदि इनपुट संख्या =[2, 3, 6, 5] की तरह है, तो आउटपुट ट्रू होगा, क्योंकि हम समूह बना सकते हैं:[2, 6] और [3, 5]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे
-
कुल:=अंकों में सभी तत्वों का योग
-
अगर योग विषम है, तो
-
झूठी वापसी
-
-
आधा :=कुल का पूर्णांक भाग / 2
-
dp :=आकार आधा + 1 की सूची और असत्य से भरें
-
डीपी [0] :=सच
-
अंकों में प्रत्येक अंक के लिए, करें
-
मैं के लिए आधा से 0 की सीमा में, 1 से घटाएं, करें
-
अगर मैं>=संख्या, तो
-
डीपी [i]:=डीपी [i] या डीपी [i - संख्या]
-
-
-
-
वापसी डीपी [आधा]
उदाहरण
class Solution: def solve(self, nums): total = sum(nums) if total & 1: return False half = total // 2 dp = [True] + [False] * half for num in nums: for i in range(half, 0, -1): if i >= num: dp[i] |= dp[i - num] return dp[half] ob = Solution() nums = [2, 3, 6, 5] print(ob.solve(nums))
इनपुट
[2, 3, 6, 5]
आउटपुट
True