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

Python-এ n ক্যান্ডি k ব্যাগে বিতরণের পদ্ধতির সংখ্যা গণনা করার প্রোগ্রাম


মনে করুন, n সংখ্যক ক্যান্ডি এবং k ব্যাগ আছে যাতে ক্যান্ডিগুলো রাখতে হবে। আমাদের বের করতে হবে কতগুলো সম্ভাব্য পদ্ধতিতে ক্যান্ডিগুলো বিতরণ করা যায় যাতে প্রতিটি ব্যাগে কমপক্ষে একটি ক্যান্ডি থাকে। এই সিনেরিওতে প্রতিটি ক্যান্ডি уникаল, তাই ক্যান্ডিগুলো ব্যাগে বিতরণের সব সম্ভাব্য পদ্ধতি গণনা করতে হবে।

সুতরাং, যদি ইনপুট হয় n = 3, k = 2, তবে আউটপুট হবে 3।

ক্যান্ডিগুলো নিচেরভাবে রাখা যায় −

(1, 2), (3)
(1), (2, 3)
(2), (1, 3)

এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব −

  • dp := 1 দিয়ে ইনিশিয়ালাইজ করা n x n আকারের একটি ম্যাট্রিক্স

  • c = 2 থেকে n পর্যন্ত জন্য, করুন

    • b = 1 থেকে min(c, k) পর্যন্ত জন্য, করুন

      • dp[c, b] := dp[c-1, b-1] + dp[c-1, b] * (b+1)

  • dp[n-1, k-1] রিটার্ন করুন

উদাহরণ

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন −

def solve(n, k):
    dp = [[1] * n for _ in range(n)]
    for c in range(2, n):
        for b in range(1, min(c, k)):
            dp[c][b] = dp[c-1][b-1] + dp[c-1][b] * (b+1)
    return dp[n-1][k-1]

print(solve(3, 2))

ইনপুট

3, 2

আউটপুট

3

  1. পাইথন প্রোগ্রাম - n নোড দিয়ে BST-এর সংখ্যা বের করুন

  2. পাইথনে ম্যাট্রিক্সে ঘিরা দ্বীপের সংখ্যা গণনা করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম সেট ব্যবহার করে স্ট্রিংয়ে ভাওয়েল কাউন্ট করা

  4. পাইথন প্রোগ্রাম: সেট ব্যবহার করে স্ট্রিং-এ স্বরবর্ণ গণনা (Duplicate)