আমরা একটি C++ প্রোগ্রাম विकাশ করব যা O(n²) সময়ে সর্বোচ্চ সাবঅ্যারে যোগফল বের করবে (নেইভ মেথড)।
শুরু
অ্যারে এলিমেন্টগুলো ইনপুট নিন।
সাব-অ্যারের দৈর্ঘ্যের জন্য 1 থেকে n পর্যন্ত একটি লুপ চালান, এই লুপের ভিতরে,
পূর্বের লুপের সাথে নেস্টেড একটি আরেকটি লুপ চালান, সেই দৈর্ঘ্যের প্রথম সাব-অ্যারের যোগফল ক্যালকুলেট করুন।
বাকি সাব-অ্যারের যোগফলের জন্য, যোগফলে পরবর্তী এলিমেন্ট যোগ করুন এবং সেই সাব-অ্যারের প্রথম এলিমেন্ট বিয়োগ করুন।
গ্লোবাল max-এর সাথে তুলনা করুন এবং বেশি পেলে আপডেট করুন।
সর্বোচ্চ সাব-অ্যারে এবং তাদের যোগফল রেজাল্ট হিসেবে প্রিন্ট করুন।
শেষ
#includeusing 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