কম্পিউটার টিউটোরিয়াল

সাবসেট সাম সমস্যার পাইথন প্রোগ্রাম


এই আর্টিকেলে আমরা নিচের সমস্যা সমাধানের কথা শিখব।

সমস্যা: একটি অ্যারেতে নন-নেগেটিভ ইন্টিজারগুলোর একটি সেট এবং একটি ভ্যালু sum দেওয়া আছে, আমাদের নির্ধারণ করতে হবে যে দেয়া সেটের कोई সাবসেট আছে কিনা যার যোগফল দেওয়া sum-এর সমান।

চলুন নিচের ইমপ্লিমেন্টেশনে সমাধানটি পর্যবেক্ষণ করি।

# নেইভ পদ্ধতি

উদাহরণ

def SubsetSum(set, n, sum) :
    # বেস কেস
    if (sum == 0) :
        return True
    if (n == 0 and sum != 0) :
        return False
    # লাস্ট এলিমেন্ট sum থেকে বড় হলে উপেক্ষা
    if (set[n - 1] > sum) :
        return SubsetSum(set, n - 1, sum)
    # অন্যথায়, যোগফল চেক করুন
    # (১) লাস্ট এলিমেন্ট অন্তর্ভুক্ত করে
    # (২) লাস্ট এলিমেন্ট বাদ দিয়ে
    return SubsetSum(set, n-1, sum) or SubsetSum(set, n-1, sum - set[n-1])

# মেইন
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

# ডাইনামিক পদ্ধতি

উদাহরণ

# একটি ব্যক্তি দ্বারা করা যাব সর্বোচ্চ এক্টিভিটির সংখ্যা
def Activities(s, f):
    n = len(f)
    print("The selected activities are:")
    # প্রথম এক্টিভিটি সবসময় সিলেক্টেড
    i = 0
    print(i, end=" ")
    # বাকি এক্টিভিটিগুলোর জন্য
    for j in range(n):
        # যদি স্টার্ট টাইম আগের এক্টিভিটির ফিনিশ টাইম থেকে বড় বা সমান হয়
        if s[j] >= f[i]:
            print(j, end=" ")
            i = j

# মেইন
s = [1, 2, 0, 3, 2, 4]
f = [2, 5, 4, 6, 8, 8]
Activities(s, f)

আউটপুট

Found a subset with given sum

উপসংহার

এই আর্টিকেলে আমরা শিখেছি কিভাবে সাবসেট সাম সমস্যার পাইথন প্রোগ্রাম লিখতে হয়।

  1. পাইথনে একটি সংখ্যার জোড় গুণনীয়গুলোর যোগফল বের করার প্রোগ্রাম

  2. পাইথনে চক্রবৃদ্ধি বunga (Compound Interest) প্রোগ্রাম

  3. পাইথন প্রোগ্রাম: সিম্পল ইন্টারেস্ট ক্যালকুলেশন

  4. পাইথন প্রোগ্রাম: সিলেকশন সোর্ট অ্যালগরিদম