Ermitteln des maximalen Teilarrays von nicht negativen Zahlen aus einem Array. Das Sub-Array sollte kontinuierlich sein. Das heißt, ein Unterfeld, das durch Auswahl des zweiten und vierten Elements und Überspringen des dritten Elements erstellt wurde, ist ungültig.Segmentierungsfehler (Vektordeklaration)
Das maximale Sub-Array wird durch die Summe der Elemente im Sub-Array definiert. Unterfeld A ist größer als Unterfeld B, wenn Summe (A)> Summe (B).
Dies ist meine Lösung:
vector<int> Solution::maxset(vector<int> &A) {
// Do not write main() function.
// Do not read input, instead use the arguments to the function.
// Do not print the output, instead return values as specified
// Still have a doubt. Checkout www.interviewbit.com/pages/sample_codes/ for more details
vector <int> bla;
int sum[100]={0};
int k = 0;
int j = 1;
for (int i =0; i < A.size(); i++){
if (A[i] > -1){
sum[k] = A[i] + sum[k];
}
else {
k++;
}
}
cout<<sum[0]<<" ";
cout<<sum[1]<<" ";
cout << sum[2] << " ";
int s = 0;
for (int i =0; i< 100; i++){
if (s < sum[i]){
s = sum[i];
k = i;
}
}
cout << s;
int count = 0;
for (int i =0; i < A.size(); i++){
if (A[i] < 0) {
count ++;
}
if (count == k) {
int j = i+1;
int x = 0;
while (A[j] > 0 && j< (A.size()-1)) {
// bla[x] = A[j];
x++;
j++;
}
}
}
return bla;
}
Wenn ich die Linie bla Kommentar- [x] = A [j], ich Segmentierung Fehler. Kann jemand erklären, wie man diesen Fehler aufdeckt? Ich habe irgendwo gelesen, dass im Stapel nicht genug Platz ist. Ich verstehe nicht wie. Danke
Jetzt ist die richtige Zeit ist, zu lernen, wie man einen Debugger verwenden. Übrigens, dein Code ist fehlerhaft. – WhiZTiM
Wenn Sie einen Vektor ohne eine bestimmte Größe definieren, ist er * leer *. Jede Indizierung in diesem wird * außerhalb der Grenzen * sein. –
@Someprogrammerdude dann, wie ordne ich einem Vektor Werte zu, wenn ich es nicht indizieren kann? –