Ciao a tutti
Sto seguendo un corso di algoritmi e mi sto scervellando per arrivare a una soluzione ma so che non manca molto.
Va benissimo lo pseudocodice!
Il testo dell'esercizio è questo:
Scrivere un algoritmo che, dato in input un array A[1..n] non ordinato, composto da n numeri
reali arbitrari, ed un intero positivo k (k=n) determina il numero di valori che compaiono in A esattamente k
volte.
Ad esempio, se A = [1, 7, -3, 4, 10, 7, 4, -3, 7] e k= 2, l'algoritmo restituisce 2, in quanto ci sono due valori
che compaiono esattamente due volte (ossia i numeri -3, 4). Notare che il numero 7 non è da includere nella
lista in quanto compare più di due volte.
Se A = [-10, 8, 9, 2] l'algoritmo restituisce 0, in quanto ci sono 0 valori che compaiono esattamente 2 volte.
Io sono più o meno a questo:
ordinando il vettore all'inizio ottengo questo vettore:
A = [-3, -3, 1, 4, 4, 4, 7, 10]
Algoritmo ContaRipetizioni( Array A[], int i, int j)
if (i<=j) do
int contatoreTOT=0
for i=1 to n
for j=i+1 to k
if (i!=j) && A[i]==A[j]
count++
endif
endfor
if count==k //così se so che effettivamente è ripetuto k volte, incremento il contatore principale che poi effettivamente restituirò
contatoreTOT=contatoreTOT+1
endif
return contatoreTOT
endfor
else
return 0