Ich muss ein Programm schreiben, das sequenzielle Elemente eines Arrays summiert und die maximale Summe ausgibt. Wie Sie sehen werden, funktioniert mein Algorithmus nicht, wenn alle Elemente negativ sind.Die maximale Summe in einem Zahlenfeld finden
#include <iostream>
int main()
{
int nums[1000] = {-1,-3,-4,-2,-5,-1,-9,-4,-2,-2};
int sums[100][100];
int n = 9;
for(int i = 0; i <= n; i++) {
for(int j = n; j >= i; j--) {
for(int k = j; k >= i; k--) {
sums[i][j] += nums[k];
}
}
}
int max_sum = 0;
int max_begin;
int max_end;
for(int i = 0; i <= n; i++) {
for(int j = i+1; j <= n; j++){
std::cout << "i = " << i << " j = " << j << ": " << sums[i][j] << "\n";
if(max_sum < sums[i][j]) {
max_sum = sums[i][j];
max_begin = i;
max_end = j;
}
}
}
std::cout << "Maximum: " << max_sum << " bei i = " << max_begin << " bis j = " << max_end;
return 0;
}
Ich habe bereits versucht, diese Lösung
#include <climits>
...
int max_sum = INT_MIN;
...
Während dies völlig in Ordnung funktioniert wir nicht climits in unserem Vortrag hatte noch so für eine andere Art und Weise ich suche.
reaktivieren Warum können Sie 'climits' nicht verwenden? Was ist mit ['std :: numeric_limits'] (http://en.cppreference.com/w/cpp/types/numeric_limits)? Sie vermeiden bewusst die kanonische Lösung, aber wofür? –
Ich kann 'Climits' verwenden. Aber ich dachte, dass es eine alternative Lösung geben muss, da wir in unserem Vortrag noch keinen Höhepunkt hatten und ich daran interessiert bin, es zu wissen. –
Wie soll ich 'std :: numeric_limits' verwenden? Ich kann nicht sehen, wie man es in meinen Code einbindet –