Perchè dovrei sparare vaccate? Ti ho detto che secondo il tuo codice non funziona se la sottosequenza ha un solo elemento, e con l'aggiunta di quella condizione come ho scritto dovrebbe funzionare anche nel caso che non ti funziona.
Mi sbaglio!?
il mio codice funziona, la tua riga è inutile e se sostieni il contrario portami ad esempio un input che porta un output sbagliato, punto.
Ma perchè non ragioni usando come dire con la logica?
Prova a mettere allora 1 2 3 4 e sottosequenza 1. Ti dirà che non è contenuta, sbaglio anche adesso?
Ultima modifica effettuata da Lawliet 27/11/09 21:58
Ma perchè non ragioni usando come dire con la logica?
Prova a mettere allora 1 2 3 4 e sottosequenza 1. Ti dirà che non è contenuta, sbaglio anche adesso?
bastava un esempio, cmq ho invertito due righe, basta mettere il check della fine seconda riga prima del confronto dell'elemento successivo e aggiungere una cosina al return
bool contenuta(int A[], int B[], int dim1, int dim2) {
// La più lunga non può essere contenuta nella più corta!
if (dim2 > dim1) return false;
// Se stiamo comparando le due sequenze
bool bComparing = false;
int h = 0;
// Scorriamo tutti gli elementi della sequenza principare
for(int n = 0; n < dim1; n++) {
// Se le stiamo comparando
if (bComparing) {
// Andiamo avanti nella seconda sequenza
h++;
// Se siamo arrivati in fondo alla seconda sequenza
// e non abbiamo trovato nessun elemento diverso
// vuol dire che sono uguali
if (h == dim2) return true;
// Se gli elementi sono diversi la sequenza è diversa
if (A[n] != B[h]) return false;
} else
// Iniziamo il confronto al primo elemento uguale
bComparing = (A[n] == B[0]);
}
// Ritorna vero se mentre stavamo comparando la stringa siamo arrivati
// alla fine della seconda stringa, il che ci dice che erano uguali.
return bComparing && h == dim2;
}