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

C++ প্রোগ্রাম: সর্বোচ্চ সাবঅ্যারে যোগফল O(n²) সময়ে (নেইভ মেথড)


আমরা একটি C++ প্রোগ্রাম विकাশ করব যা O(n²) সময়ে সর্বোচ্চ সাবঅ্যারে যোগফল বের করবে (নেইভ মেথড)।

অ্যালগরিদম
শুরু
  অ্যারে এলিমেন্টগুলো ইনপুট নিন।
  সাব-অ্যারের দৈর্ঘ্যের জন্য 1 থেকে n পর্যন্ত একটি লুপ চালান, এই লুপের ভিতরে,
    পূর্বের লুপের সাথে নেস্টেড একটি আরেকটি লুপ চালান, সেই দৈর্ঘ্যের প্রথম সাব-অ্যারের যোগফল ক্যালকুলেট করুন।
    বাকি সাব-অ্যারের যোগফলের জন্য, যোগফলে পরবর্তী এলিমেন্ট যোগ করুন এবং সেই সাব-অ্যারের প্রথম এলিমেন্ট বিয়োগ করুন।
    গ্লোবাল max-এর সাথে তুলনা করুন এবং বেশি পেলে আপডেট করুন।
    সর্বোচ্চ সাব-অ্যারে এবং তাদের যোগফল রেজাল্ট হিসেবে প্রিন্ট করুন।
শেষ
উদাহরণ কোড
#include 
using namespace std;

int main() {
    int n, i, j, m = -1, s, ini_m, fi_m;
    cout << "\nEnter the number of data element in the array: "; cin >> n;
    int a[n];
    for (i = 0; i < n; i++) {
        cout << "Enter element " << i+1 << ": "; cin >> a[i];
    }
    for (i = 1; i < n+1; i++) {
        s = 0;
        for (j = 0; j < n; j++) {
            if (j < i) s += a[j];
            else s = s + a[j] - a[j-i];
            if (m < s) {
                ini_m = j - i + 1;
                fi_m = j;
                m = s;
            }
        }
    }
    cout << "\nThe maximum sub array is: ";
    for (i = ini_m; i <= fi_m; i++) cout << a[i] << " ";
    cout << "\nThe maximum sub-array sum is: " << m;
}
আউটপুট
Enter the number of data element in the array: 10
Enter element 1: 1
Enter element 2: -2
Enter element 3: 3
Enter element 4: -4
Enter element 5: 5
Enter element 6: -6
Enter element 7: 7
Enter element 8: 8
Enter element 9: -9
Enter element 10: 10
The maximum sub array is: 7 8 -9 10
The maximum sub-array sum is: 16
  1. বাইনারি ট্রির গভীরতম নোডগুলোর যোগফল বের করা C++-এ

  2. সি++ প্রোগ্রাম: গ্রাফের ম্যাক্সিমাম কাট (Maximum Cut) বের করা

  3. C++ প্রোগ্রাম: অ্যারে পার্টিশনিং মেথড দিয়ে kth সবচেয়ে ছোট এলিমেন্ট বের করা

  4. পাইথনে সাবঅ্যারে যোগফলের মডুলো m-এর সর্বোচ্চ মান বের করার প্রোগ্রাম