Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - sottosequenze contenute
Forum - C/C++ - sottosequenze contenute - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 22:58
Venerdì, 27/11/2009
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
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 23:13
Venerdì, 27/11/2009
Testo quotato

Postato originariamente da Lawliet:

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#

  1. bool contenuta(int A[], int B[], int dim1, int dim2) {
  2.  
  3.         // La più lunga non può essere contenuta nella più corta!
  4.         if (dim2 > dim1) return false;
  5.  
  6.         // Se stiamo comparando le due sequenze
  7.         bool bComparing = false;
  8.  
  9.         int h = 0;
  10.  
  11.         // Scorriamo tutti gli elementi della sequenza principare
  12.         for(int n = 0; n < dim1; n++) {
  13.                
  14.                 // Se le stiamo comparando
  15.                 if (bComparing) {
  16.                        
  17.                         // Andiamo avanti nella seconda sequenza
  18.                         h++;
  19.  
  20.                         // Se siamo arrivati in fondo alla seconda sequenza
  21.                         // e non abbiamo trovato nessun elemento diverso
  22.                         // vuol dire che sono uguali
  23.                         if (h == dim2) return true;
  24.  
  25.                         // Se gli elementi sono diversi la sequenza è diversa
  26.                         if (A[n] != B[h]) return false;
  27.  
  28.                
  29.                 } else
  30.                         // Iniziamo il confronto al primo elemento uguale
  31.                         bComparing = (A[n] == B[0]);           
  32.  
  33.  
  34.         }
  35.  
  36.  
  37.         // Ritorna vero se mentre stavamo comparando la stringa siamo arrivati
  38.         // alla fine della seconda stringa, il che ci dice che erano uguali.
  39.         return bComparing && h == dim2;
  40.  
  41. }



PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 23:32
Venerdì, 27/11/2009
non avevo capito prima che volevi un esempio pratico ^^'
Ora dovrebbe essere giusto ;)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo