इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे।
समस्या कथन - हमें एक सरणी में गैर-ऋणात्मक पूर्णांकों का एक सेट दिया जाता है, और एक मान योग, हमें यह निर्धारित करने की आवश्यकता होती है कि दिए गए सेट का एक उपसमुच्चय किसी दिए गए योग के बराबर योग के साथ मौजूद है या नहीं।
आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें -
# अनुभवहीन दृष्टिकोण
उदाहरण
def SubsetSum(set, n, sum) :
# Base Cases
if (sum == 0) :
return True
if (n == 0 and sum != 0) :
return False
# ignore if last element is > sum
if (set[n - 1] > sum) :
return SubsetSum(set, n - 1, sum);
# else,we check the sum
# (1) including the last element
# (2) excluding the last element
return SubsetSum(set, n-1, sum) or SubsetSum(set, n-1, sumset[n-1])
# main
set = [2, 14, 6, 22, 4, 8]
sum = 10
n = len(set)
if (SubsetSum(set, n, sum) == True) :
print("Found a subset with given sum")
else :
print("No subset with given sum") आउटपुट
Found a subset with given sum
# गतिशील दृष्टिकोण
उदाहरण
# maximum number of activities that can be performed by a single person
def Activities(s, f ):
n = len(f)
print ("The selected activities are:")
# The first activity is always selected
i = 0
print (i,end=" ")
# For rest of the activities
for j in range(n):
# if start time is greater than or equal to that of previous activity
if s[j] >= f[i]:
print (j,end=" ")
i = j
# main
s = [1, 2, 0, 3, 2, 4]
f = [2, 5, 4, 6, 8, 8]
Activities(s, f) आउटपुट
Found a subset with given sum
निष्कर्ष
इस लेख में, हमने सीखा है कि हम सबसेट सम समस्या के लिए पायथन प्रोग्राम कैसे बना सकते हैं