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

পাইথনে দিয়ে দিয়ে সর্বোচ্চ দৈর্ঘ্যের অ্যারিথমেটিক সাবসিকোয়েন্স খুঁজে বের করার প্রোগ্রাম

একটি সংখ্যা লিস্ট nums দেওয়া আছে। এমন একটি সাবসিকোয়েন্স খুঁজে বের করতে হবে যাতে সেটি অ্যারিথমেটিক প্রগ্রেশন (AP) গঠন করে—অর্থাৎ প্রতিটি দুটি সন্নিকট উপাদানের পার্থক্য (ডিফারেন্স) একই থাকে। সাবসিকোয়েন্সের সর্বোচ্চ দৈর্ঘ্য বের করতে হবে।

উদাহরণস্বরূপ, nums = [1, 4, 7, 10, 13, 20, 16] হলে আউটপুট ৬, কারণ [1, 4, 7, 10, 13, 16] একটি AP যার कॉमन ডিফারেন্স ৩।

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

  1. n = len(arr)। যদি n <= 1, n রিটার্ন করুন।
  2. dp = একটি ডিকশনারি (ডিফল্ট ভ্যালু ১), কী: (index, diff), মান: সাবসিকোয়েন্স দৈর্ঘ্য।
  3. res = 0।
  4. i = 1..n-1 এবং j = 0..i-1 জন্য:
    • diff = arr[i] - arr[j]।
    • dp[i, diff] = dp[j, diff] + 1।
    • res = max(res, dp[i, diff])।
  5. res রিটার্ন করুন।

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

from collections import defaultdict

class Solution:
    def solve(self, arr):
        n = len(arr)
        if n <= 1:
            return n
        res = 0
        dp = defaultdict(lambda: 1)
        for i in range(1, n):
            for j in range(i):
                diff = arr[i] - arr[j]
                dp[i, diff] = dp[j, diff] + 1
                res = max(res, dp[i, diff])
        return res

ob = Solution()
nums = [1, 4, 7, 10, 13, 20, 16]
print(ob.solve(nums))

ইনপুট

[1, 4, 7, 10, 13, 20, 16]

আউটপুট

6
  1. পাইথনে সর্বোচ্চ ক্রমবর্ধমান সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে দুটি স্ট্রিং থেকে সর্বোচ্চ অ্যানাগ্রাম সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে স্ট্রিংয়ে সর্বোচ্চ সমবায়ন ব্র্যাকেট সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে দिये गये লিস্ট থেকে k সংখ্যক সবচেয়ে লম্বা শব্দ বের করুন