J'écris l'algorithme en sélectionnant l'élément kth min, mais il y a une erreur de segment 11 signalée par le compilateur, je veux savoir ce qui ne va pas? Et ce qui provoque la panne de segment 11? Parce qu'il ya tellement de fois pour signaler la faute du segment 11.Pourquoi existe-t-il une erreur de segment 11
#include <stdio.h>
int candidate(int a[], int m, int n) {
int j = m, c = a[m], count = 1;
while (j < m && count > 0) {
j++;
if(a[j] == c)
count++;
else
count--;
}
if(j == n)
return c;
else
return candidate(a, j+1, n);
}
int main() {
int n, a[n],c;
int count = 0;
printf("Input the number of elements in the array:\n");
scanf("%d", &n);
printf("Input the array elements by sequence:\n");
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
c = candidate(a, 1, n);
for (int j = 0; j < n; ++j)
{
if(a[j] == c)
count++;
}
if (count > n/2)
printf("%d\n", c);
else
printf("none\n");
}
'int n, un [n]': 'n' n'est pas initialisé. – BLUEPIXY
"Parce qu'il y a tellement de fois à signaler le défaut du segment 11": autant de fois que le débogueur est nécessaire de localiser l'emplacement exact où il casse. –
Mais la vérité est que je dois entrer n comme une entrée. Comment puis-je initialiser n? –