Déterminez le sous-tableau maximum de nombres non négatifs d'un tableau. Le sous-réseau doit être continu. C'est-à-dire qu'un sous-groupe créé en choisissant les deuxième et quatrième éléments et en ignorant le troisième élément est invalide.Obtention d'une erreur de segmentation (déclaration vectorielle)
La sous-matrice maximale est définie en termes de somme des éléments du sous-réseau. Le sous-tableau A est supérieur au sous-tableau B si somme (A)> somme (B).
C'est ma solution:
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;
}
Si je décommenter la ligne bla [x] = A [j], je reçois une erreur de segmentation. Quelqu'un peut-il expliquer comment décourager cette erreur? Je l'ai lu quelque part qu'il n'y a pas assez d'espace dans la pile. Je ne comprends pas comment. Merci
maintenant est le bon moment pour apprendre à utiliser un débogueur. BTW, votre code est défectueux. – WhiZTiM
Lorsque vous définissez un vecteur sans taille spécifique, il sera * vide *. Toute indexation dans ce sera * hors limites *. –
@Someprogrammerdude puis comment attribuer des valeurs à un vecteur si je ne peux pas l'indexer? –