কম্পিউটার

পাইথনে k আকারের ক্রমবর্ধমান অনুক্রমের সংখ্যা খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের কাছে nums নামক সংখ্যার একটি তালিকা আছে এবং আরেকটি মান k আছে, আমাদের k আকারের পরবর্তী সংখ্যাগুলি খুঁজে বের করতে হবে যা কঠোরভাবে বৃদ্ধি পাচ্ছে। উত্তরটি খুব বড় হলে, এটিকে 10^9 + 7 দ্বারা মোড করুন।

সুতরাং, ইনপুট যদি nums =[2, 3, 4, 1] k =2 এর মত হয়, তাহলে আউটপুট হবে 3, যেমন আমাদের কাছে সাইজ 2:[2, 3], [3, 4], [২, ৪]।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • m :=10^9 + 7
  • dp :=সংখ্যার মতো আকারের একটি তালিকা এবং 1 দিয়ে পূরণ করুন
  • নিম্নলিখিত k বার পুনরাবৃত্তি করুন, করুন
      j-এর জন্য dp - 1 থেকে 0 এর পরিসরে, 1 কমিয়ে দিন, করুন
      • dp[j] :=0
      • আমি 0 থেকে j রেঞ্জের জন্য, কর
        • যদি nums[i]
        • dp[j] :=dp[j] + dp[i]
  • রিটার্ন (dp-এ সমস্ত উপাদানের যোগফল) mod 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[i]
          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. পাইথনে একটি পরিসরে নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম

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

    4. পাইথন প্রোগ্রাম একটি তালিকায় সবচেয়ে বড় সংখ্যা খুঁজে বের করতে