Esercizio sottosequenza

di il
2 risposte

Esercizio sottosequenza

Ciao a tutti !
Avrei una domanda su questo esercizio : Date 2 sequenze di numeri A e B , stabilire se B è una sottosequenza di A.
Questo è il mio codice:

#include <stdio.h>
#include <stdlib.h>
#define MAX_M 100
#define MAX_N 100

int leggiArray (int x[]){
int i,n;
printf("Il numero di elementi e' : ");
scanf("%d",&n);
printf("Inserisci %d numeri interi: " , n);
for(i=0;i<n;i++)
    scanf("%d",&x[i]);
return(n);
}

int verifica (int a[],int b[],int n,int m){
int i,j,contatore=0;
for(i=0;i<n-m;i++){
    if(b[0]==a[i]){
        for(j=1;j<m;j++){
            if(b[j]==a[i+j])
                contatore++;
        }}}
return(contatore);
}

int main(void){
int A[MAX_N],B[MAX_M],n,m;
n=leggiArray(A);
m=leggiArray(B);
if (verifica(A,B,n,m))==m-1
    printf("B e' una sottosequenza di A.\n");
else
    printf("B NON e' una sottosequenza di A.\n");
return(0);
}
So che è un algoritmo non molto efficiente a causa dei troppi cicli for e if , ho visto la soluzione del libro ed è certamente più elegante.
Io vorrei sapere però perchè questa mia soluzione non funziona.
In particole mi da errore qui:
if (verifica(A,B,n,m))==m-1
La funzione ha come return l'intero "contatore" quindi perchè non posso eguagliarla a m-1 ?

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte