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

পাইথনে আকার k-এর স্ট্রিক্টলি ইনক্রিজিং সাবসিকোয়েন্সের সংখ্যা গণনা করার প্রোগ্রাম

একটি লিস্ট nums এবং একটি মান k দেওয়া আছে। আকার k-এর স্ট্রিক্টলি ইনক্রিজিং সাবসিকোয়েন্স কতটি আছে সেটি বের করতে হবে। উত্তর বড় হলে 10^9+7 দিয়ে মড করুন।

উদাহরণস্বরূপ, nums = [2, 3, 4, 1], k = 2 হলে আউটপুট ৩: [2,3], [3,4], [2,4]।

সমাধানের পদ্ধতি (DP)

  1. m = 10**9 + 7।
  2. dp = আকার len(nums), সব ১ (দৈর্ঘ্য ১-এর সাবসিকোয়েন্স)।
  3. k-1 বার ইটারেট করুন (দৈর্ঘ্য ২ থেকে k পর্যন্ত বানাতে):
    • j = n-1 থেকে ০ পর্যন্ত (উল্টা দিক থেকে):
      • dp[j] = 0।
      • i = 0..j-1: যদি nums[i] < nums[j], dp[j] = (dp[j] + dp[i]) % m।
  4. sum(dp) % m রিটার্ন করুন।

পাইথন কোড উদাহরণ

class Solution:
    def solve(self, nums, k):
        m = 10**9 + 7
        dp = [1] * len(nums)
        for _ in range(k - 1):
            for j in range(len(dp) - 1, -1, -1):
                dp[j] = 0
                for i in range(j):
                    if nums[i] < nums[j]:
                        dp[j] = (dp[j] + dp[i]) % m
        return sum(dp) % m

ob = Solution()
nums = [2, 3, 4, 1]
k = 2
print(ob.solve(nums, k))

ইনপুট

[2, 3, 4, 1], 2

আউটপুট

3
  1. পাইথনে Nth ফিবোনাচ্চি সংখ্যা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে BST-এ নির্দিষ্ট রেঞ্জে থাকা নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে প্রাইম নম্বর খুঁজে বের করার বিভিন্ন পদ্ধতি

  4. পাইথনে লিস্ট থেকে সর্বোচ্চ সংখ্যা বের করা