কম্পিউটার

আয়তক্ষেত্রের যোগফল খুঁজে বের করার প্রোগ্রাম যার যোগফল পাইথনে সর্বাধিক k


ধরুন আমাদের একটি 2d ​​ম্যাট্রিক্স এবং আরেকটি মান k আছে, আমাদেরকে অরেক্ট্যাঙ্গেলের বৃহত্তম যোগফল খুঁজে বের করতে হবে যেখানে যোগফল ≤ k।

সুতরাং, যদি ইনপুট মত হয়

5 −2
7 10

এবং k =15, তাহলে আউটপুট হবে 12, যেহেতু আমরা 15 এর থেকে কম 12 এর যোগফল পেতে আয়তক্ষেত্র [5, 7] নিতে পারি।

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

  • n :=a

    এর সারি গণনা
  • m :=a

    এর কলাম সংখ্যা
  • উত্তর :=inf

  • 0 থেকে n রেঞ্জের i1 এর জন্য, করুন

    • সারি :=m আকারের একটি তালিকা এবং 0

      দিয়ে পূরণ করুন
    • i1 থেকে n রেঞ্জে i2 এর জন্য, করুন

      • 0 থেকে m রেঞ্জে j এর জন্য, করুন

        • সারি [j] :=সারি [j] + a[i2, j]

      • s :=একটি নতুন সেট

      • s

        -এ 0 ঢোকান
      • যোগফল :=0

      • 0 থেকে m রেঞ্জে j এর জন্য, করুন

        • যোগফল :=যোগফল + সারি [j];

        • temp :=s-এর সমস্ত আইটেমের জন্য একটি তালিকা যা (সমষ্টি − k)

          থেকে বড়
        • যদি তাপমাত্রা> 0 এর আকার হয়, তাহলে

          • u :=সর্বনিম্ন তাপমাত্রা

          • উত্তর :=সর্বাধিক উত্তর এবং (সমষ্টি − u)

        • s

          এর মধ্যে যোগফল সন্নিবেশ করান
  • উত্তর ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

শ্রেণীর সমাধান:def solve(self, a, k):n =len(a) যদি n ==0:ফেরত 0; m =len(a[0]) ans =-999999; i1 এর জন্য রেঞ্জ(n):সারি =[0]*মি; রেঞ্জে i2 এর জন্য(i1, n):রেঞ্জে j এর জন্য(m):সারি[j] +=a[i2][j] s =set() s.add(0) sum =0 রেঞ্জে j এর জন্য m):যোগফল +=সারি [j]; temp =[e এর জন্য e in s if e> (sum − k)] if len(temp)> 0:u =min(temp) ans =max(ans, sum − u) s.add(sum) return ansob =সমাধান()ম্যাট্রিক্স =[ [5, −2], [7, 10]]k =15print(ob.solve(matrix, k))

ইনপুট

<প্রে>[[5, −2],[7, 10]], 15

আউটপুট

12

  1. পাইথনে একটি বাইনারি গাছের সর্বাধিক ঘন ঘন সাবট্রি যোগফল খুঁজে বের করার প্রোগ্রাম

  2. পাইথন প্রোগ্রামে অ্যারের সমষ্টি খুঁজুন

  3. পাইথন প্রোগ্রাম একটি তালিকার ক্রমবর্ধমান যোগফল খুঁজে বের করতে

  4. অ্যারের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম