Devo verificare quanti elementi in comune hanno due array ordinati (in ordine crescente) di n numeri distinti...
io ho scritto questo codice che al livello logico mi torna solo che come risultato mi da zero sempre anche quando sono due array che hanno molti elementi in comune:
#include <stdio.h>
int main() {
int *a;
int *b;
int count=0;
int x,y,i;
int j;
scanf ("%d",&x);
a=(int*)malloc(x*sizeof(int));
for (i=0;i<x;i++) {
scanf("%d",&a[i]);
if ((a[i]<=a[i-1]) && (i!=0)){
i--;
}
}
scanf ("%d",&y);
b=(int*)malloc(y*sizeof(int));
for (i=0;i<y;i++) {
scanf("%d",&b[i]);
if ((b[i]<=b[i-1]) && (i!=0)){
i--;
}
}
j=0;
for (i=0;i<x;i++) {
if (a[i]==b[j]) {
count++;
j++;
}else if (a[i]>a[j]) {
j++;
i--;
}
}
printf ("%d",count);
return 0;
}
so che avrei potuto fare un ciclo dentro un ciclo però deve impiegarci il meno possibile e deve essere di tempo lineare...
grazie in anticipo