एल्गोरिदम
सबसे पहले सरणी के तत्वों को इनपुट के रूप में लें। फिर सबएरे की लंबाई 1 से n तक के लिए एक लूप बनाएं। इस लूप के भीतर एक नेस्टेड लूप बनाएं जो उस लंबाई के पहले सबएरे का योग निकालता है। शेष सबएरे के योग के लिए, अगले तत्व को योग में जोड़ें और उस सबएरे के पहले तत्व को घटाएं। इस योग की तुलना वैश्विक अधिकतम से करें और यदि यह अधिक है तो अपडेट करें। अंत में अधिकतम सबएरे और उसका योग प्रिंट करें।
उदाहरण कोड
#include <iostream>
using namespace std;
int main() {
int n, i, j, m = -1, s, ini_m, fi_m;
cout << "\nसरणी में डेटा तत्वों की संख्या दर्ज करें: ";
cin >> n;
int a[n];
for (i = 0; i < n; i++) {
cout << "तत्व " << 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 << "\nअधिकतम सब एरे है: ";
for (i = ini_m; i <= fi_m; i++)
cout << a[i] << " ";
cout << "\nअधिकतम सबएरे योग है: " << m;
return 0;
}आउटपुट
सरणी में डेटा तत्वों की संख्या दर्ज करें: 10 तत्व 1: 1 तत्व 2: -2 तत्व 3: 3 तत्व 4: -4 तत्व 5: 5 तत्व 6: -6 तत्व 7: 7 तत्व 8: 8 तत्व 9: -9 तत्व 10: 10 अधिकतम सब एरे है: 7 8 -9 10 अधिकतम सबएरे योग है: 16