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

পাইথনে রড কাটে একই দৈর্ঘ্যের রড বিক্রি করে সর্বোচ্চ লাভ বের করার প্রোগ্রাম

রড দৈর্ঘ্যের তালিকা (rodLen), প্রতি একক দৈর্ঘ্যের লাভ (profit) এবং প্রতি কাটের খরচ (cost) দেওয়া আছে। শুধু একই দৈর্ঘ্যের রড বিক্রি করা যায়। রড কাটতে পারেন (পূর্ণসংখ্যা দৈর্ঘ্যে) কিন্তু প্রতি কাটের জন্য cost টাকা দিতে হবে। সর্বোচ্চ লাভ বের করতে হবে।

সমস্যা উদাহরণ

ইনপুট: rodLen = [7, 10], profit = 6, cost = 4
আউটপুট: 82

ব্যাখ্যা: ৭ কেটে ৫+২, ১০ কেটে ৫+৫। তিনটি ৫ দৈর্ঘ্যের রড বিক্রি: (৫+৫+৫)×৬ - ২×৪ = ৯০ - ৮ = ৮২।

সমাধানের পদ্ধতি (ব্রুট ফোর্স সব সম্ভাব্য কাটের দৈর্ঘ্য ট্রাই করুন)

  1. l_max = max(rodLen)
  2. প্রতিটি সম্ভাব্য কাটের দৈর্ঘ্য cuts (১ থেকে l_max) এর জন্য:
    • প্রতিটি রডের জন্য:
      • যদি rod_len < cuts: স্কিপ করুন
      • c_count = rod_len // cuts (কত টুকরো পাওয়া যাবে)
      • total_len = c_count * cuts
      • যদি rod_len == total_len: c_count -= 1 (শেষ কাট দরকার নেই)
      • curr_profit = total_len * profit - cost * c_count
      • যদি curr_profit < 0: স্কিপ করুন
      • p_cut += curr_profit
    • p_max = max(p_max, p_cut)
  3. p_max রিটার্ন করুন

পাইথন কোড

def solve(rodLen, profit, cost):
    n = len(rodLen)
    if n == 0:
        return 0
    l_max = max(rodLen)
    p_max = 0
    for cuts in range(1, l_max + 1):
        p_cut = 0
        for rod_len in rodLen:
            if rod_len < cuts:
                continue
            c_count = rod_len // cuts
            total_len = c_count * cuts
            if rod_len == total_len:
                c_count -= 1
            curr_profit = total_len * profit - cost * c_count
            if curr_profit < 0:
                continue
            p_cut += curr_profit
        p_max = max(p_max, p_cut)
    return p_max

rodLen = [7, 10]
profit = 6
cost = 4
print(solve(rodLen, profit, cost))  # আউটপুট: 82

টেস্ট কেস

ইনপুট: [7, 10], 6, 4
আউটপুট: 82

  1. পাইথনে ট্রানজ্যাকশন ফি সহ স্টক কেনা-বেচা করে সর্বাধিক লাভ বের করার প্রোগ্রাম

  2. পাইথনে কুলডাউন পিরিয়ড সহ স্টক কেনা-বেচা করে সর্বাধিক লাভ বের করার প্রোগ্রাম

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

  4. পাইথনে লিস্টে সর্বোচ্চ ও ন্যূনতম উপাদানের পজিশন বের করার প্রোগ্রাম