Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
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 il 27/11/2009 alle 22: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
Codice sorgente - presumibilmente C#
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.